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

Windows PowerShell下Docker部署MongoDB副本集连接问题求助

问题:Docker容器化NodeJS服务与MongoDB副本集部署故障

在Windows PowerShell环境中使用Docker部署NodeJS服务与MongoDB副本集,初始docker-compose.yml运行时出现权限报错,调整配置后容器可正常启动,但存在以下两个问题:

  • MongoDB Compass无法通过尝试的任意URI连接副本集
  • NodeJS服务启动时抛出MongooseServerSelectionError: getaddrinfo ENOTFOUND mongo1错误

初始docker-compose.yml配置

version: '3.8'

services:
  mongo1:
    image: mongo:4.4
    container_name: mongo1
    command: ["--replSet", "rs0", "--bind_ip_all", "--port", "27017", "--keyFile", "/data/mongodb-keyfile"]
    ports:
      - 27017:27017
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - mongo1_data:/data/db
      - ./mongodb-keyfile:/data/mongodb-keyfile:ro

  mongo2:
    image: mongo:4.4
    container_name: mongo2
    command: ["--replSet", "rs0", "--bind_ip_all", "--port", "27017", "--keyFile", "/data/mongodb-keyfile"]
    ports:
      - 27018:27017
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - mongo2_data:/data/db
      - ./mongodb-keyfile:/data/mongodb-keyfile:ro

  mongo3:
    image: mongo:4.4
    container_name: mongo3
    command: ["--replSet", "rs0", "--bind_ip_all", "--port", "27017", "--keyFile", "/data/mongodb-keyfile"]
    ports:
      - 27019:27017
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - mongo3_data:/data/db
      - ./mongodb-keyfile:/data/mongodb-keyfile:ro

volumes:
  mongo1_data:
  mongo2_data:
  mongo3_data:

初始配置下尝试过的MongoDB URI

mongodb://mongo1:27017/?replicaSet=myReplicaSet
mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/?replicaSet=myReplicaSet

调整后的docker-compose.yml配置

version: '3.8'

services:
  mongo1:
    image: mongo:latest
    container_name: mongo1
    hostname: mongo1
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      MONGO_REPLICA_SET_NAME: "rs0"
  
  mongo2:
    image: mongo:latest
    container_name: mongo2
    hostname: mongo2
    ports:
      - 27018:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      MONGO_REPLICA_SET_NAME: "rs0"

  mongo3:
    image: mongo:latest
    container_name: mongo3
    hostname: mongo3
    ports:
      - 27019:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      MONGO_REPLICA_SET_NAME: "rs0"

调整后尝试过的MongoDB URI

mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/?replicaSet=myReplicaSet
mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=myReplicaSet
mongodb://mongo1:27017/?replicaSet=myReplicaSet
mongodb://mongo1:27017,mongo2:27018,mongo3:27019/?replicaSet=myReplicaSet

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:16:02