#mongodb #docker #docker-compose #mongo-express
#mongodb #docker #docker-compose #mongo-express
Вопрос:
Я пытаюсь правильно подключиться к экземпляру mongo, запускаемому docker. У меня есть следующий config.yml
version: "3"
services:
mongo-server:
container_name: mongo-server
image: mongo:4.4.2
restart: always
ports:
- "27017:27017"
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
volumes:
- mongo-data:/data/db
app:
container_name: app
image: "node:12"
working_dir: /home/node/app
environment:
- NODE_ENV=production
volumes:
- ./:/home/node/app
ports:
- "8888:8888"
command: "npm run start"
depends_on:
- mongo-server
mongo-express:
container_name: mongo-admin
image: mongo-express:0.54
restart: always
ports:
- "8081:8081"
environment:
- ME_CONFIG_MONGODB_SERVER=mongo-server
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=true
- ME_CONFIG_MONGODB_ADMINUSERNAME=${MONGO_ROOT_USER}
- ME_CONFIG_MONGODB_ADMINPASSWORD=${MONGO_ROOT_PASSWORD}
- ME_CONFIG_BASICAUTH_USERNAME=${MONGO_EXPRESS_LOGIN}
- ME_CONFIG_BASICAUTH_PASSWORD=${MONGO_EXPRESS_PASSWORD}
depends_on:
- mongo-server
volumes:
mongo-data:
Я проверил, что переменные .env передаются правильно с помощью конфигурации docker-compose
Оттуда я запускаю образы docker, запустив: docker-compose up -d
Я узнал, как удалить тома, что было первой серьезной проблемой. Теперь следующим шагом будет подключение к базе данных в моем приложении. Предоставленные имя пользователя и пароль не совсем работают.
Приложение пытается подключиться к следующей строке с помощью mongoose connect:
`mongodb://${process.env.MONGO_ROOT_USER}:${process.env.MONGO_ROOT_PASSWORD}@mongo:27017/app`
Но это не работает, и я не совсем уверен, почему. Если у кого-нибудь есть представление о том, каким он должен быть, пожалуйста, дайте мне знать
Комментарии:
1.
mongodb://.....@/!mongo/!:27017/app
. => Из того, что я вижу в вашем файле compose, ваше имя службыmongo-server
, а неmongo
. В журнале вашего приложения, который вы не показывали, вы, вероятноName or service not known
, увидите ошибку или эквивалент. Но это чистая догадка, потому что вы явно не предоставили достаточно отладочной информацииthat isn't working
.2. Привет, @Zeitounator, я немного новичок в docker. Что я мог бы предоставить, чтобы упростить задачу. Я попытался использовать имя службы с той же аутентификацией, и я
getaddrinfo ENOTFOUND undefined
вернулся с сервера. Это `/!`, которые вы разместили вокруг имени службы только для того, чтобы я увидел, на какой mongo вы ссылаетесь?