MongoDb в Docker Compose - предоставление конфигурации - PullRequest
0 голосов
/ 15 мая 2018

Пытался следовать различным руководствам, статьям и ответам SE по этому вопросу, но, похоже, он наталкивается на кирпичную стену, когда пытается развернуть это на нашем тестовом сервере (CentOS vm работает с докером, создает и т. Д.).

Я могу запустить mongo, но, похоже, он переходит в режим только localhost без аутентификации (даже если параметры указаны), и сценарий установки .js тоже никогда не запускается.

Я бы хотел, чтобы это работало полностью, чтобы наш конвейер непрерывной интеграции был приятным и простым в использовании. Похоже, проблема в том, что документация для этого по-разному устарела, фрагментирована и, в противном случае, сложна для объединения в единое целое.

Что я пробовал:

Создан файл JS с настроенными пользователями (MongoSetup.js)

use admin

db.createUser({ "user" : "superUserAdmin",
"pwd" : "1234",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
} ]
})

db.createUser({ "user" : "writeUser",
"pwd" : "1234",
"roles" : [
{
"role" : "readWrite",
"db" : "FOO"
} ]
})

use FOO

db.createCollection("logs")

Команды в этом файле были протестированы на CLI Mongo и, кажется, работают нормально.

Создан Dockerfile, чтобы попытаться скопировать этот файл как часть сборки:

FROM mongo
COPY MongoSetup.js /docker-entrypoint-initdb.d
ENTRYPOINT usr/bin/mongod

В этом бите я менее уверен, но, похоже, файл .js копируется в этот каталог на хосте.

Наконец, файл Docker-Compose: (это выдержка, но файл действителен)

mongo-logger:
    image: FOOmongo #(the image we created and pushed to our registry using the dockerfile above)
    environment:
    - MONGO_INITDB_ROOT_USERNAME=admin
    - MONGO_INITDB_ROOT_PASSWORD=1234
    - MONGO_INITDB_DATABASE=admin
    command: bash -c 'mongo < /docker-entrypoint-initdb.d/MongoSetup.js'
    network_mode: "bridge"
    volumes:
    - mongologger:/data/db
    logging:
     driver: syslog
     options:
      syslog-address: "udp://127.0.0.1:514"
    ports:
    - 27017:27017

В данный момент кажется, что контейнер mongo запускается ... а затем умирает через несколько секунд с проблемами соединения в журналах.

Другие вещи, которые я пробовал

Попытка включить аутентификацию Mongo в файле compose:

command: mongod -auth --bind_ip all
command: mongod --auth --bind_ip all

С правильными IP-адресами тоже вместо всех.

Попытка использовать команду Bash из Dockerfile:

CMD ["bash","/docker-entrypoint-initdb.d/MongoSetup.js"]

Я пробовал по-разному добавлять и удалять эти строки в разных комбинациях, но безрезультатно. Я уверен, что там где-то есть ошибки новичка, но это довольно запутанный коктейль - команды mongo, linux, dockerfile, docker-compose и docker.

Может кто-нибудь посоветовать, пожалуйста:

1) Как настроить монго для запуска в режиме, в котором он доступен удаленно.

2) И / или запустить скрипт для настройки пользователей по умолчанию и БД.

Спасибо!

1 Ответ

0 голосов
/ 15 мая 2018

Вы забыли ведущий / в вашем Dockerfile.Это правильная строка:

ENTRYPOINT /usr/bin/mongod
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...