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

Docker Compose部署MongoDB副本集报错:未启用复制功能

MongoDB副本集搭建报错:This node was not started with replication enabled.

我正在搭建MongoDB副本集以启用Change Streams功能(socket.io MongoDB-Adapter依赖该功能),但启动容器时遇到错误导致服务终止。

当前配置

Docker Compose配置

db:
    build:
      dockerfile: images/Dockerfile_mongodb_dev
    command: ["--config", "/etc/mongo.conf"]
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - ./mongodb/mongo.conf:/etc/mongo.conf:ro
      - ./mongodb/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
      - ./data-dev/db:/data/db

Docker镜像内容

FROM mongo:7.0.6

RUN echo "KEYFILE_CONTENT" >> /etc/mongodb-keyfile && chown mongodb:mongodb /etc/mongodb-keyfile && chmod 400 /etc/mongodb-keyfile

mongo.conf配置

security:
  authorization: enabled
  keyFile: /etc/mongodb-keyfile

net:
  bindIpAll: true
  port: 27027

replication:
  replSetName: rs0

初始化脚本(mongo-init.js)

rs.initiate({
    _id: 'rs0',
    members: [
        { _id: 0, host: 'db:27017' }
    ]
});

报错信息

MongoServerError: This node was not started with replication enabled.

解决方案

1. 修正端口不一致问题

mongo.conf中配置的端口是27027,但Docker Compose的端口映射、初始化脚本中使用的都是27017,这会导致MongoDB监听的端口与副本集初始化时指定的端口不匹配,进而无法正确加载复制配置。

修改mongo.conf的net.port为27017:

net:
  bindIpAll: true
  port: 27017

2. 确保复制配置正确加载

验证Docker Compose中command参数是否正确指定了配置文件,当前的["--config", "/etc/mongo.conf"]是正确的,同时确认volumes中./mongodb/mongo.conf:/etc/mongo.conf:ro的挂载路径无误,保证容器能读取到正确的配置。

3. 验证密钥文件有效性

确保Dockerfile中的KEYFILE_CONTENT是MongoDB副本集要求的有效密钥内容(需为PEM格式,长度在6-1024字节之间),且权限设置正确(chmod 400、所有者为mongodb:mongodb),这部分当前配置是符合要求的,但需替换占位符为实际密钥。

4. 调整初始化脚本执行时机(可选)

如果初始化脚本执行过早,MongoDB尚未完全启动并加载复制配置,可在脚本中添加等待逻辑:

function waitForMongoReady() {
  try {
    rs.status();
    return true;
  } catch (err) {
    print("等待MongoDB服务启动...");
    sleep(1000);
    return waitForMongoReady();
  }
}

waitForMongoReady();

rs.initiate({
    _id: 'rs0',
    members: [
        { _id: 0, host: 'db:27017' }
    ]
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:12:39