Docker部署RocketChat时MongoDB带密码连接失败求助
问题分析
从错误日志来看,核心问题集中在两点:
MongoServerSelectionError: getaddrinfo EAI_AGAIN mongodb:RocketChat容器无法解析MongoDB服务域名,根源是Docker Compose配置的服务结构错误,导致服务间网络不通。ReplicaSetNoPrimary:MongoDB副本集未完成初始化,RocketChat连接时找不到主节点,最终触发拓扑关闭错误。
另外你提供的compose.yml存在语法错误(service::rocketchat::为无效格式),且MongoDB的环境变量未归属到对应服务下,这是网络解析失败的直接原因。
修正后的配置方案
1. 保留.env文件内容不变
MONGODB_ROOT_USERNAME=root MONGODB_ROOT_PASSWORD=rootpass
2. 重新编写compose.yml
确保服务结构正确,添加健康检查保证MongoDB初始化完成后再启动RocketChat:
version: '3.8' services: mongodb: image: mongo:6.0 volumes: - mongodb_data:/data/db environment: MONGODB_REPLICA_SET_MODE: primary MONGODB_REPLICA_SET_NAME: rs0 MONGODB_DATABASE: rocketchat ALLOW_EMPTY_PASSWORD: "no" MONGODB_ROOT_USERNAME: ${MONGODB_ROOT_USERNAME} MONGODB_ROOT_PASSWORD: ${MONGODB_ROOT_PASSWORD} MONGODB_PORT_NUMBER: 27017 MONGODB_ENABLE_JOURNAL: "true" command: ["--replSet", "rs0", "--bind_ip_all"] healthcheck: test: echo 'rs.status().ok' | mongosh --port 27017 -u ${MONGODB_ROOT_USERNAME} -p ${MONGODB_ROOT_PASSWORD} --authenticationDatabase admin --quiet interval: 10s timeout: 10s retries: 5 rocketchat: image: rocketchat/rocket.chat:latest volumes: - rocketchat_data:/app/uploads environment: MONGO_URL: "mongodb://${MONGODB_ROOT_USERNAME}:${MONGODB_ROOT_PASSWORD}@mongodb:27017/rocketchat?authSource=admin&replicaSet=rs0" MONGO_OPLOG_URL: "mongodb://${MONGODB_ROOT_USERNAME}:${MONGODB_ROOT_PASSWORD}@mongodb:27017/local?authSource=admin&replicaSet=rs0" ROOT_URL: http://localhost:3000 # 根据实际域名修改 PORT: 3000 ports: - "3000:3000" depends_on: mongodb: condition: service_healthy volumes: mongodb_data: rocketchat_data:
3. 关键修正点说明
- 修复服务结构:将
mongodb和rocketchat拆分为独立服务,确保同属一个Docker网络,域名解析正常。 - 添加健康检查:通过
mongosh验证副本集状态,只有当副本集初始化完成且认证正常时,才启动RocketChat。 - 明确启动命令:强制MongoDB加载副本集配置并允许所有IP绑定,避免IP限制导致的连接问题。
- 修正变量格式:将布尔类型的环境变量用字符串包裹,避免Docker Compose解析出错。
启动验证步骤
- 清理旧容器与数据:
docker compose down -v
- 重新启动服务:
docker compose up -d
- 查看日志确认状态:
docker compose logs -f rocketchat
当日志中出现RocketChat is running相关内容时,说明连接成功。
内容的提问来源于stack exchange,提问作者Ivl
相关产品推荐
相关产品推荐

