生成keyFile
openssl rand -base64 756 > mongodb.key
chmod 400 mongodb.key
docker-compose
version: '3.3'
services:
mongodb1:
image: mongo:4.2.1
container_name: mongodb1
hostname: mongodb1
restart: always
volumes:
- ./data/mongo1:/data/db
- ./data/mongodb.key:/data/mongodb.key
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=123456
ports:
- 37017:27017
command: mongod --replSet mongos --keyFile /data/mongodb.key
entrypoint:
- bash
- -c
- |
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
exec docker-entrypoint.sh $$@
networks:
- mongo
mongodb2:
image: mongo:4.2.1
container_name: mongodb2
hostname: mongodb2
restart: always
volumes:
- ./data/mongo2:/data/db
- ./data/mongodb.key:/data/mongodb.key
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=123456
ports:
- 37018:27017
command: mongod --replSet mongos --keyFile /data/mongodb.key
entrypoint:
- bash
- -c
- |
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
exec docker-entrypoint.sh $$@
networks:
- mongo
mongodb3:
image: mongo:4.2.1
container_name: mongodb3
hostname: mongodb3
restart: always
volumes:
- ./data/mongo3:/data/db
- ./data/mongodb.key:/data/mongodb.key
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=123456
ports:
- 37019:27017
command: mongod --replSet mongos --keyFile /data/mongodb.key
entrypoint:
- bash
- -c
- |
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
exec docker-entrypoint.sh $$@
networks:
- mongo
networks:
mongo:
启动服务
docker-compose up -d
初始化副本集
docker exec -it mongodb1 /bin/bash
mongo -u root -p 123456
rs.initiate({"_id":"mongos", configsvr: false,"version":1,"members":[{"_id":0,"host":"192.168.137.17:37017"},{"_id":1,"host":"192.168.137.17:37018"},{"_id":2,"host":"192.168.137.17:37019"}]})
最后的mongodb地址(192.168.137.17)和端口根据具体环境进行变更