docker-compose.yml
version: '3.9'
services:
mongo:
build: ./build-mongo
container_name: mongo
restart: always
networks:
- mongo
ports:
- "27017:27017"
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
- MONGO_INITDB_DATABASE=test-database
mongo-express:
build: ./build-mongo-express
container_name: mongo-express
restart: always
networks:
- mongo
ports:
- "8093:8081"
environment:
- ME_CONFIG_MONGODB_SERVER=mongo
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=true
- ME_CONFIG_MONGODB_ADMINUSERNAME=mongo
- ME_CONFIG_MONGODB_ADMINPASSWORD=mongo
- ME_CONFIG_MONGODB_AUTH_DATABASE=admin
- ME_CONFIG_MONGODB_AUTH_USERNAME=${MONGO_ROOT_USER}
- ME_CONFIG_MONGODB_AUTH_PASSWORD=${MONGO_ROOT_PASSWORD}
- ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_LOGIN}
- ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}
networks:
mongo:
Файл располагается в корневом каталоге.
Файл .env:
MONGO_ROOT_USER=mongo
MONGO_ROOT_PASSWORD=mongo
MONGOEXPRESS_LOGIN=mongo
MONGOEXPRESS_PASSWORD=mongo
Dockerfile для Mongo
FROM mongo:5.0
Файл располагается в ./build-mongo
Dockerfile для Mongo Express
FROM mongo-express:0.54
Файл располагается в ./build-mongo-express
Подробнее можно почитать на официальных страницах:
docker-compose up --build -d
Выполнить сборку контейнера и запустить можно при помощи команды:
Обратите внимание, что в качестве хоста мы используем не Localhost, а mongo. Мongo — это название контейнера который мы используем в docker-compose файле, а следовательно внутри контейнера мы можем доступиться только через mongo хост к нашей базе.
Можно использовать localhost если проброшены порты. Если же докеровская сеть изолирована, тогда доступ получаем по названию сервиса (секция services в yml).
В нашем случае нужно дописать переменную окружения — «ME_CONFIG_MONGODB_SERVER=mongo».
Дополнил статью с применением этой переменной.