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

Docker Compose部署RocketChat无法连接MongoDB容器求助

问题解决步骤

1. 修正MongoDB连接地址

Docker Compose网络中,容器间需通过服务名互相访问,而非localhost——RocketChat容器内的localhost指向自身,而非Mongo容器。需将MONGO_URL和MONGO_OPLOG_URL中的localhost替换为Mongo服务名mongo:

MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
MONGO_OPLOG_URL=mongodb://mongo:27017/local?replicaSet=rs0

2. 修正错误的环境变量与Expose配置

  • PORT环境变量仅需填写端口号,移除映射格式,改为:PORT=3000
  • expose字段用于声明容器内部开放端口,无需主机映射,将3000:3000和27017:27017改为单纯端口号:
    # RocketChat部分
    expose:
      - 3000
    # Mongo部分
    expose:
      - 27017
    

3. 初始化MongoDB副本集

虽然已指定--replSet rs0参数,但Mongo容器启动后需手动初始化副本集:

  1. 进入Mongo容器:
docker exec -it <你的Mongo容器名> mongo
  1. 在Mongo Shell中执行初始化命令:
rs.initiate({
  _id: "rs0",
  members: [{ _id: 0, host: "mongo:27017" }]
})

执行rs.status()查看状态,返回ok: 1即为初始化成功。

修正后的完整docker-compose.yml

version: '3'
services:
  rocketchat:
    image: rocketchat/rocket.chat:latest
    ports:
      - "3000:3000"
    environment:
      - MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
      - MONGO_OPLOG_URL=mongodb://mongo:27017/local?replicaSet=rs0
      - ROOT_URL=http://localhost:3000
      - PORT=3000
    depends_on:
      - mongo
    expose:
      - 3000
    restart: unless-stopped
    networks: 
      - rocketchat-network
  mongo:
    image: mongo:5
    volumes:
      - ./data:/data/db
    command: mongod --oplogSize 128 --replSet rs0
    expose:
      - 27017
    restart: unless-stopped
    networks: 
      - rocketchat-network

networks:
  rocketchat-network:
    driver: bridge

重启服务验证

停止并删除现有容器后重新启动:

docker-compose down
docker-compose up -d

待Mongo副本集初始化完成,RocketChat即可正常连接MongoDB。

内容的提问来源于stack exchange,提问作者Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:20:09