dokcer-compose方式部署 mongo集群
声明:本人在单台机器上部署的mongo机器, mongo版本为8.0, 这玩意居然部署了一天,终于搞好了, 希望对后面想要部署的人有帮助
先创建一个mongodb目录, 后续的配置,数据都存放在这个目录中:
1. 创建mongo-secrets目录,mkdir mongo-secrets
2. 创建keyfile文件, openssl rand -base64 756 > keyfile
3. 设置权限,所属组
chmod 600 mongo-secrets/keyfile
sudo chown 999:999 mongo-secrets/keyfile
4. 创建docker-compose.yaml,如果你想用,请修改密码,将xxxxxx改成自己的。 文件如下:
services:
mongo1:
image: mongo:latest
hostname: mongo1
container_name: mongo1
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: xxxxxxx
MONGO_REPLICA_SET_NAME: rs0
volumes:
- ./mongo1/data:/data/db
- ./mongo-secrets/keyfile:/etc/mongo-secrets/keyfile
ports:
- "27017:27017"
networks:
- mongo-cluster-net
command:
- mongod
- --replSet=rs0
- --bind_ip_all
- --keyFile=/etc/mongo-secrets/keyfile
- --auth
depends_on:
- mongo2
- mongo3
mongo2:
image: mongo:latest
hostname: mongo2
container_name: mongo2
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: xxxxxxx
MONGO_REPLICA_SET_NAME: rs0
volumes:
- ./mongo2/data:/data/db
- ./mongo-secrets/keyfile:/etc/mongo-secrets/keyfile
networks:
- mongo-cluster-net
command:
- mongod
- --replSet=rs0
- --bind_ip_all
- --keyFile=/etc/mongo-secrets/keyfile
- --auth
mongo3:
image: mongo:latest
hostname: mongo3
container_name: mongo3
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: xxxxxxx
MONGO_REPLICA_SET_NAME: rs0
volumes:
- ./mongo3/data:/data/db
- ./mongo-secrets/keyfile:/etc/mongo-secrets/keyfile
networks:
- mongo-cluster-net
command:
- mongod
- --replSet=rs0
- --bind_ip_all
- --keyFile=/etc/mongo-secrets/keyfile
- --auth
networks:
mongo-cluster-net:
driver: bridge
5. 运行: docker-compose up -d
6. 查看结果:docker-compose ps -a

状态一定要注意: 是Up状态,而不是restart状态。
7. 初始化集群
docker-compose exec mongo1 mongosh --username admin --password xxxxxx --authenticationDatabase admin --eval 'rs.initiate({_id: "rs0", members: [{_id: 0, host: "mongo1:27017"}, {_id: 1, host: "mongo2:27017"}, {_id: 2, host: "mongo3:27017"}]})'
8. 查看集群状态:
sleep 5 && docker-compose exec mongo1 mongosh --username admin --password xxxxxxx --authenticationDatabase admin --eval 'rs.status()'
9. 目录结构如下:

10. 状态如下, 太长了(部分截图)


浙公网安备 33010602011771号