这个 docker-compose 文件有什么问题?它应该创建一个 MongoDB 副本集

问题描述 投票:0回答:1

我只想为本地开发环境配置 MongoDB 副本集,并且我有以下 docker-compose 文件。一切似乎都初始化良好,但容器 mongo-init-replica 似乎无法与提供的连接字符串连接。据我所知,Docker Compose 在同一网络中创建所有容器,因此它们应该能够互相看到。

这是 docker-compose.yml 文件:

version: '3'
services:
  redis:
    image: redis:latest
    container_name: redis
    ports:
      - "6379:6379"

  mongodb1:
    image: mongo:latest
    container_name: mongodb1
    ports:
      - "27017:27017"
    volumes:
      - ./data/db1:/data/db
    environment:
      - MONGO_INITDB_DATABASE=tennis
      - MONGO_REPLICA_SET_NAME=rs0
      - MONGO_PORT=27017
      - MONGO_PRIORITY=1
    command: ["mongod", "--replSet", "rs0", "--bind_ip_all"]

  mongodb2:
    image: mongo:latest
    container_name: mongodb2
    ports:
      - "27018:27017"
    volumes:
      - ./data/db2:/data/db
    environment:
      - MONGO_INITDB_DATABASE=tennis
      - MONGO_REPLICA_SET_NAME=rs0
      - MONGO_PORT=27017
      - MONGO_PRIORITY=0
    command: ["mongod", "--replSet", "rs0", "--bind_ip_all"]

  mongodb3:
    image: mongo:latest
    container_name: mongodb3
    ports:
      - "27019:27017"
    volumes:
      - ./data/db3:/data/db
    environment:
      - MONGO_INITDB_DATABASE=tennis
      - MONGO_REPLICA_SET_NAME=rs0
      - MONGO_PORT=27017
      - MONGO_PRIORITY=0
    command: ["mongod", "--replSet", "rs0", "--bind_ip_all"]

  mongo-init-replica:
    image: mongo:latest
    depends_on:
      - mongodb1
      - mongodb2
      - mongodb3
    volumes:
      - ./scripts:/scripts
    command: ["mongosh", "mongodb://mongodb1:27017,mongodb2:27017,mongodb3:27017/admin", "/scripts/init-replica.js"]

这是容器mongo-init-replica启动时的日志:

Current Mongosh Log ID: 65c6bbfee1b8e4ee1e55263f
Connecting to:          mongodb://mongodb1:27017,mongodb2:27017,mongodb3:27017/admin?appName=mongosh+1.6.0
MongoServerSelectionError: Server selection timed out after 30000 ms

如果我停止任何 mongodb1mongodb2mongodb3 容器,我会得到类似的信息

MongoServerSelectionError: getaddrinfo ENOTFOUND mongodb3

所以看起来它解析了容器地址,但无法建立连接。

请问有什么提示吗?

提前致谢:)

mongodb docker docker-compose containers replicaset
1个回答
0
投票

我的 /etc/hosts 文件中似乎缺少以下条目:

127.0.0.1 mongodb1 mongodb2 mongodb3

这解决了问题,我能够配置副本集:)

© www.soinside.com 2019 - 2024. All rights reserved.