docker-compose mongodb 副本集
warning:
这篇文章距离上次修改已过426天,其中的内容可能已经有所变动。
为了创建一个MongoDB副本集,您可以使用以下docker-compose.yml文件作为起点。请确保您已经安装了Docker和docker-compose。
version: '3.8'
services:
mongo1:
image: mongo:5.0
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
command: mongod --replSet rs0
mongo2:
image: mongo:5.0
ports:
- "27018:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
depends_on:
- mongo1
entrypoint: [ "mongod", "--replSet", "rs0", "--port", "27018" ]
mongo3:
image: mongo:5.0
ports:
- "27019:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
depends_on:
- mongo1
entrypoint: [ "mongod", "--replSet", "rs0", "--port", "27019" ]
mongo-init:
image: mongo:5.0
depends_on:
- mongo1
- mongo2
- mongo3
entrypoint: [ "mongosh", "--eval", "rs.initiate({_id:'rs0',members:[{_id:0,host:'mongo1:27017'},{_id:1,host:'mongo2:27017'},{_id:2,host:'mongo3:27017'}]})" ]- 这个配置文件定义了三个MongoDB服务:
mongo1,mongo2,mongo3,以及一个用于初始化副本集的mongo-init服务。 - 每个MongoDB容器暴露了不同的端口,以便可以在同一主机上运行而不发生端口冲突。
- 环境变量
MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD设置了root用户的用户名和密码。 - 每个容器都以
mongod --replSet rs0命令启动,其中rs0是副本集的名称。 mongo-init服务依赖于所有的MongoDB服务,并使用mongosh运行rs.initiate来初始化副本集。
要启动副本集,请保存此docker-compose.yml文件并运行:
docker-compose up -d这将在后台启动所有服务。如果您还没有下载MongoDB镜像,这个命令还会自动为您下载。
评论已关闭