У меня было довольно много времени на подключение к Dockerized экземпляру MongoDB. Мне удалось настроить контейнер MongoDB для эти инструкции на моей локальной машине разработки, но те же шаги, похоже, не работают в производственной среде.
Мои точные шаги по созданию, запуску и подключению к контейнеру:
Создайте и запустите контейнер
docker run --name prod-mongo -p 27017:27017 -d mongo --auth
Добавлен первоначальный пользователь:
docker exec -it prod-mongo mongo admin
db.createUser({user:'skipper', pwd:'skipperspassword', roles:[{role:'userAdminAnyDatabase',db:'admin'}] });
Успешно подключился к контейнеру Docker из другого контейнера Mongo:
docker run -it --rm --link prod-mongo:mongo mongo mongo -u skipper -p --authenticationDatabase admin prod-mongo/skippers-apps
Безуспешно подключен к контейнеру Docker с хоста Docker: mongo skippers-apps --authenticationDatabase admin -u skipper -p
Это последний шаг, который меня беспокоит. Он работает в моей локальной среде разработки, но не в производственной среде.
Среда разработки
Производственная среда
Хотя я не уверен, почему версия MongoDB, которую я использовал ранее (2.6.10), плохо сочеталась с Docker, я смог решить проблему, обновив версию клиента MongoDB.
Мне было бы любопытно узнать точную причину, по которой клиент 2.6.10 не может подключиться к серверу MongoDB в образе Docker MongoDB по умолчанию.
Решение: обновлен клиент MongoDB с 2.6.10 до 3.2.11