Пытался следовать различным руководствам, статьям и ответам 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) И / или запустить скрипт для настройки пользователей по умолчанию и БД.
Спасибо!