docker-compose mongodb 副本集
为了创建一个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镜像,这个命令还会自动为您下载。
评论已关闭