- 创建docker网络
docker network create mongoCluster
- 运行两个mongo实例:
mongo1
docker run -d --hostname mongo1 --restart always -p 27007:27017 -v ~/apps/mongo/db1:/data/db -v ~/apps/mongo/log1:/data/log --name mongo1 --network mongoCluster mongo:latest mongod --replSet myReplicaSet --bind_ip_all --dbpath "/data/db" --logpath "/data/log/db.log"
mongo2
docker run -d --hostname mongo2 --restart always -p 27008:27017 -v ~/apps/mongo/db2:/data/db -v ~/apps/mongo/log2:/data/log --name mongo2 --network mongoCluster mongo:latest mongod --replSet myReplicaSet --bind_ip_all --dbpath "/data/db" --logpath "/data/log/db.log"
- 修改本要host文件,添加域名解析
127.0.0.1 host.docker.internal
- 初始化 replicaSet
docker exec -it mongo1 mongosh --eval "rs.initiate({
_id: \"myReplicaSet\",
members: [
{_id: 0, host: \"host.docker.internal:27007\"},
{_id: 1, host: \"host.docker.internal:27008\"},
]
})"
- 检查状态
docker exec -it mongo1 mongosh --eval "rs.status()"
- 连接地址
mongodb://localhost:27007,localhost:27008/?retryWrites=false&loadBalanced=false&replicaSet=myReplicaSet&readPreference=primary&connectTimeoutMS=10000
或者也可以
mongodb://localhost:27007/?retryWrites=false&loadBalanced=false&replicaSet=myReplicaSet&readPreference=primary&connectTimeoutMS=10000