以下是一个简化的docker-compose.yml
文件示例,用于搭建MongoDB 6.0的高可用分片集群:
version: '3.8'
services:
configsvr:
image: mongo:6.0
command: mongod --configsvr --replSet csReplSet
ports:
- "27019:27019"
volumes:
- "configsvr_data:/data/configdb"
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin
shard1_mongod:
image: mongo:6.0
command: mongod --shardsvr --replSet shard1ReplSet --dbpath /data/db
ports:
- "27018:27017"
volumes:
- "shard1_data:/data/db"
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin
shard2_mongod:
image: mongo:6.0
command: mongod --shardsvr --replSet shard2ReplSet --dbpath /data/db
ports:
- "27020:27017"
volumes:
- "shard2_data:/data/db"
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin
mongos:
image: mongo:6.0
command: mongos --configdb configsvr:27019 --port 27017
depends_on:
- configsvr
ports:
- "27017:27017"
volumes:
- "mongos_data:/data/db"
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin
volumes:
configsvr_data:
shard1_data:
shard2_data:
mongos_data:
这个docker-compose.yml
文件定义了一个MongoDB 6.0的配置服务器(configsvr),两个分片(shard1和shard2),以及一个mongos路由。它还为每个服务配置了相应的持久化数据卷,以便在容器重启后数据可以保留。
请注意,这个配置是为了演示目的而简化的。在生产环境中,你需要进一步配置网络,增加复制集和分片副本集的节点,并设置合适的资源限制和重启策略。