You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose启动MongoDB后无数据库和用户问题求助

问题:Mongo容器初始化后无用户、数据库及集合,前端容器健康检查失败

涉及文件

  • /mongo/init/init-mongo.js
  • .env.development
  • docker-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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:32:45