Docker 系列之 docker-compose 部署 MongoDB 三副本集群(三节点)
以下是一个简化的 docker-compose.yml
文件示例,用于部署一个具有三个副本的MongoDB三节点集群:
version: '3.8'
services:
mongo-node1:
image: mongo:5.0
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=example
volumes:
- mongo-node1-data:/data/db
ports:
- "27017:27017"
command: mongod --replSet "rs0" --bind_ip_all
mongo-node2:
image: mongo:5.0
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=example
volumes:
- mongo-node2-data:/data/db
depends_on:
- mongo-node1
entrypoint: [ "sleep", "30" ]
mongo-node3:
image: mongo:5.0
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=example
volumes:
- mongo-node3-data:/data/db
depends_on:
- mongo-node1
entrypoint: [ "sleep", "60" ]
mongo-init:
image: mongo:5.0
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=example
volumes:
- mongo-init-data:/data/db
depends_on:
- mongo-node1
- mongo-node2
- mongo-node3
entrypoint: [ "sh", "-c", "mongo --username root --password example --host mongo-node1:27017 <<EOF
rs.initiate(
{
_id: 'rs0',
members: [
{ _id: 0, host: 'mongo-node1:27017' },
{ _id: 1, host: 'mongo-node2:27017' },
{ _id: 2, host: 'mongo-node3:27017' }
]
}
)
EOF" ]
volumes:
mongo-node1-data:
mongo-node2-data:
mongo-init-data:
这个 docker-compose.yml
文件定义了一个MongoDB副本集群,其中包含三个节点(mongo-node1, mongo-node2, mongo-node3)和一个初始化容器(mongo-init)。每个节点都会部署在单独的Docker容器中,并且数据卷被用于持久化数据。初始化容器在所有MongoDB节点容器启动之后连接到主节点,并使用rs.initiate
命令来配置副本集。
请注意,这个配置是为了演示目的而简化的。在生产环境中,你需要根据具体需求调整配置,例如设置正确的网络、安全选项和资源限制。
评论已关闭