Docker Compose启动MongoDB后无数据库和用户问题求助
问题:Mongo容器初始化后无用户、数据库及集合,前端容器健康检查失败
涉及文件
/mongo/init/init-mongo.js.env.developmentdocker-compose.yml
问题现象
- Mongo实例启动后为空,无用户、数据库及集合
- 执行命令
docker exec -it ord-data-backend-db mongosh连接容器内mongosh后,运行show databases显示为空 - 容器内通过
/bin/bash可正常获取docker-compose.yml中定义的环境变量 - 因Mongo实例未完成初始化,mongo-express容器因健康检查失败无法启动
启动命令
docker-compose -f docker-compose.dev.yml --env-file .env.development up -d
文件内容
docker-compose.yml
version: '3.9' services: mongo: image: mongo:6.0 container_name: ord-data-backend-db restart: unless-stopped ports: - '${MONGO_PORT}:27017' healthcheck: test: echo 'db.runCommand('ping').ok' | mongosh localhost:${MONGO_PORT}/test --quiet interval: 10s timeout: 10s retries: 5 start_period: 10s environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} MONGO_INITDB_DATABASE: ${MONGO_DB_NAME} MONGO_INITDB_USER: ${MONGO_DB_ADMIN_USERNAME} MONGO_INITDB_PASSWORD: ${MONGO_DB_ADMIN_PASSWORD} volumes: - ./mongo/db:/data/db - ./mongo/initdb.d/:/docker-entrypoint-initdb.d/ mongo-express: image: mongo-express:0.54.0 container_name: ord-data-backend-db-front restart: unless-stopped ports: - 8081:8081 environment: ME_CONFIG_MONGODB_ADMINUSERNAME: ${ME_CONFIG_MONGODB_ADMINUSERNAME} ME_CONFIG_MONGODB_ADMINPASSWORD: ${ME_CONFIG_MONGODB_ADMINPASSWORD} ME_CONFIG_MONGODB_SERVER: mongo ME_CONFIG_MONGODB_ENABLE_ADMIN: true ME_CONFIG_BASICAUTH_USERNAME: ${MONGO_DB_ADMIN_USERNAME} ME_CONFIG_BASICAUTH_PASSWORD: ${MONGO_DB_ADMIN_PASSWORD} ME_CONFIG_MONGODB_PORT: ${MONGO_PORT} ME_CONFIG_MONGODB_SSL: false depends_on: mongo: condition: service_healthy
.env.development
MONGO_PORT=27018 MONGO_DB_NAME=ord-data-backend MONGO_INITDB_ROOT_USERNAME=root MONGO_INITDB_ROOT_PASSWORD=p@$$w0rd MONGO_DB_ADMIN_USERNAME=kw MONGO_DB_ADMIN_PASSWORD=p@$$w0rd ME_CONFIG_MONGODB_ADMINUSERNAME=root ME_CONFIG_MONGODB_ADMINPASSWORD=p@$$w0rd
init-mongo.js
db = db.getSiblingDB(process.env.MONGO_INITDB_DATABASE); db.createUser({ user: process.env.MONGO_INITDB_USER, pwd: process.env.MONGO_INITDB_PASSWORD, roles: [ { role: 'readWrite', db: process.env.MONGO_INITDB_DATABASE, }, ], }); db.createCollection('data');
内容的提问来源于stack exchange,提问作者Kenya-West
相关产品推荐
相关产品推荐

