docker-compose создать пользователя в mognodb - PullRequest
0 голосов
/ 12 сентября 2018

Какое лучшее решение для создания пользователя и базы данных в MongoDB с использованием docker-compose?

mongo:
restart: always
image: mongo:latest
container_name: "mongodb"
environment:
 - MONGODB_USERNAME=test
 - MONGODB_PASSWORD=test123
 - MONGODB_DATABASE=test1
volumes:
 - ./data/db:/var/micro-data/mongodb/data/db
 - ./setup:/setup
ports:
 - 27017:27017
command: mongod --smallfiles --logpath=/dev/null # --quiet

Конвертация MONGODB у меня не работает.

1 Ответ

0 голосов
/ 12 сентября 2018

С https://hub.docker.com/_/mongo/ вам нужно запустить БД с отключенной аутентификацией, подождать, пока монго раскрутится, создать пользователя, перезапустить контейнер с включенной аутентификацией.

https://hub.docker.com/r/bitnami/mongodb/ добавлен удобный скрипт:

Вы можете создать пользователя с ограниченным доступом к базе данных при первом запуске контейнера. Для этого укажите переменные среды MONGODB_USERNAME, MONGO_PASSWORD и MONGODB_DATABASE.

$ docker run --name mongodb \
  -e MONGODB_USERNAME=my_user -e MONGODB_PASSWORD=password123 \
  -e MONGODB_DATABASE=my_database bitnami/mongodb:latest

Похоже, у вас настроены переменные среды bitnami, но используйте исходное изображение image: mongo:latest там, где они не используются. Так что либо используйте image: bitnami/mongodb:latest, либо добавьте пользователя вручную.

Обновление:

Начиная с версии 3.0 вы можете воспользоваться Исключением Localhost , поэтому вам не нужно перезапускать контейнер. Вместо этого вы можете запустить его с включенной аутентификацией, подождать некоторое время, пока сервер начнет слушать, создать пользователей из контейнера, например,

docker exec mongo4 mongo test1 \
    --eval 'db.createUser({user: "test", pwd: "test123", roles: [ "readWrite", "dbAdmin" ]});'
...