如何在Docker Compose中运行MongoDB副本集

6

我尝试在我的 Mac 上使用 mongoldb-community 在本地运行 mongodb 副本集,我遵循 mongodb 文档,我可以通过以下命令运行它:

mongod --port 27017 --dbpath /usr/local/var/mongodb --replSet rs0 --bind_ip localhost,127.0.0.1

但它不能在后台运行,所以每次我想要启动MongoDB副本集时,我都需要先运行该命令,在运行之前我应该先停止Mongo,然后在下一个选项卡控制台中运行mongo --eval "rs.initiate()"来再次创建副本集。

这是我的Docker Compose:

version: "3.7"
services:
  mongodb_container:
    image: mongo:latest
    ports:
      - 27017:27017
    volumes:
      - mongodb_data_container:/data/db

volumes:
  mongodb_data_container:

如何将其转换为docker-compose?是否可能?

我能使用docker exec CONTAINER_ID [commands]吗?像上面那样运行mongo命令,但必须停止在该docker中运行的mongodb?

1个回答

4

您可以使用以下docker-compose服务来创建MongoDB副本集:

mongodb-primary:
    image: "bitnami/mongodb:4.2"
    user: root
    volumes:
      - ./mongodb-persistence/bitnami:/bitnami
    networks:
      - parse_network
    environment:
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_REPLICA_SET_KEY=123456789
      - MONGODB_ROOT_USERNAME=admin-123
      - MONGODB_ROOT_PASSWORD=password-123
      - MONGODB_USERNAME=admin-123
      - MONGODB_PASSWORD=password-123
      - MONGODB_DATABASE=my_database
    ports:
      - 27017:27017

  mongodb-secondary:
    image: "bitnami/mongodb:4.2"
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_REPLICA_SET_KEY=123456789
      - MONGODB_PRIMARY_HOST=mongodb-primary
      - MONGODB_PRIMARY_PORT_NUMBER=27017
      - MONGODB_PRIMARY_ROOT_USERNAME=admin-123
      - MONGODB_PRIMARY_ROOT_PASSWORD=password-123
    networks:
      - parse_network
    ports:
      - 27027:27017

  mongodb-arbiter:
    image: "bitnami/mongodb:4.2"
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-arbiter
      - MONGODB_REPLICA_SET_MODE=arbiter
      - MONGODB_PRIMARY_HOST=mongodb-primary
      - MONGODB_PRIMARY_PORT_NUMBER=27017
      - MONGODB_PRIMARY_ROOT_PASSWORD=password-123
      - MONGODB_REPLICA_SET_KEY=123456789
    networks:
      - parse_network
    ports:
      - 27037:27017

networks:
  parse_network:
    driver: bridge
    ipam:
      driver: default
volumes:
  mongodb_master_data:
    driver: local

mongodb://admin-123:password-123@mongodb-primary:27017/my_database?authSource=my_database - Ana Lava
耶!我刚把服务放在那里了 ;) - Ana Lava
如果我使用 mongo host 运行会怎么样?我无法运行它。 - Weq Iou
1
评论不是用于长时间讨论的。请考虑创建一个聊天室,更新原始问题或者提出一个新问题。 - Mojtaba Hosseini
如果您想连接到mongodb-primary,您应该在相同的docker网络中。如果您不在同一网络中,请尝试使用“localhost”或您的服务器IP地址代替mongodb-primary。 - Ana Lava
显示剩余14条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接