docker 部署 mongodb 集群【建议收藏】
要在Docker中部署MongoDB集群,你可以使用官方的MongoDB镜像,并使用Docker Compose来编排服务。以下是一个简单的示例,展示了如何使用Docker Compose来启动一个3个节点的MongoDB副本集。
首先,创建一个名为 docker-compose.yml
的文件,内容如下:
version: '3.7'
services:
mongo1:
image: mongo:latest
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: rootuser
MONGO_INITDB_ROOT_PASSWORD: rootpass
volumes:
- mongo1_data:/data/db
command: mongod --replSet "rs0" --bind_ip_all
mongo2:
image: mongo:latest
ports:
- "27018:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: rootuser
MONGO_INITDB_ROOT_PASSWORD: rootpass
volumes:
- mongo2_data:/data/db
depends_on:
- mongo1
command: mongod --replSet "rs0" --bind_ip_all
mongo3:
image: mongo:latest
ports:
- "27019:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: rootuser
MONGO_INITDB_ROOT_PASSWORD: rootpass
volumes:
- mongo3_data:/data/db
depends_on:
- mongo1
- mongo2
command: mongod --replSet "rs0" --bind_ip_all
mongo-init:
image: mongo:latest
depends_on:
- mongo1
- mongo2
- mongo3
environment:
MONGO_INITDB_ROOT_USERNAME: rootuser
MONGO_INITDB_ROOT_PASSWORD: rootpass
entrypoint: |
bash -c '
/usr/local/bin/mongo --host mongo1 --port 27017 -u rootuser -p rootpass <<EOF
var cfg = {
_id: "rs0",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27017" },
{ _id: 2, host: "mongo3:27017" }
]
};
rs.initiate(cfg);
rs.status();
EOF
'
volumes:
mongo1_data:
mongo2_data:
mongo3_data:
这个配置文件定义了一个MongoDB副本集,其中包含3个节点。每个节点都通过端口映射和环境变量进行配置,并且都挂载了独立的卷来持久化数据。mongo-init
服务用于初始化副本集。
要启动集群,请在含有 docker-compose.yml
文件的目录中运行以下命令:
docker-compose up -d
这将在后台启动所有服务。一旦服务运行,你可以通过任何MongoDB客户端连接到 mongo1:27017
,它将自动连接到副本集。
注意:
- 确保你有足够的权限来创建Docker容器和挂载卷。
- 确保你的MongoDB镜像版本与配置兼容。
- 这个配置主要用于演示目的,并且不应该在生产环境中直接用于生产部署,你需要根据具体的安全和性能要求进行相应的配
评论已关闭