在Windows上使用Docker 创建MongoDB 副本集的极简方法(翻译)
这篇博客介绍下在Windows上使用Docker 创建MongoDB 三节点副本集的最简单的方法。以下命令需要Docker for Windows并使用Linux 容器。
1: 为每个节点创建数据卷
docker volume create --name mongodb_repl_data1 -d local
docker volume create --name mongodb_repl_data2 -d local
docker volume create --name mongodb_repl_data3 -d local
2:创建一个docker-compose.yml 文件。
version: "3"
services:
mongo0:
hostname: mongo0
container_name: mongo0
image: mongo:latest
expose:
- 27017
ports:
- 27017:27017
volumes:
- 'mongodb_repl_data1:/data/db:z'
restart: always
command: "--bind_ip_all --replSet rs0 --port 27017"
mongo1:
hostname: mongo1
container_name: mongo1
image: mongo:latest
expose:
- 27018
ports:
- 27018:27017
volumes:
- 'mongodb_repl_data2:/data/db:z'
restart: always
command: "--bind_ip_all --replSet rs0 --port 27018"
mongo2:
hostname: mongo2
container_name: mongo2
image: mongo:latest
expose:
- 27019
ports:
- 27019:27017
volumes:
- 'mongodb_repl_data3:/data/db:z'
restart: always
command: "--bind_ip_all --replSet rs0 --port 27019"
volumes:
mongodb_repl_data1:
external: true
mongodb_repl_data2:
external: true
mongodb_repl_data3:
external: true
3: 开启容器。
docker-compose up -d
4: 进入Mongodb Shell
docker exec -it mongo0 mongo --port 27017
5:配置副本集
在mongodb shell 中执行以下语句。
config={"_id":"rs0","members":[{"_id":0,"host":"mongo0:27017"},{"_id":1,"host":"mongo1:27018"},{"_id":2,"host":"mongo2:27019"}]}
注:
需要修改Hosts文件
C:\Windows\System32\drivers\etc\hosts
添加以下内容:
127.0.0.1 mongo0 mongo1 mongo2
6:初始化副本集
rs.initiate(config);
7:添加mongodb 用户
你会看到上面命令执行完,mongodb shell 切换到了SECONDARY,
键入回车后,mongodb shell 会切换到PRIMARY 。
之后创建用户
use admin
db.createUser({user: "admin", pwd: "admin123456", roles: [{ role: "root", db: "admin" }], mechanisms: ["SCRAM-SHA-1"]})
8: 最后
使用quit或者 ctrl+c 退出mongodb shell
现在可以使用以下链接去连接mongodb了:
mongodb://admin:admin123456@localhost:27017,localhost:27018,localhost:27019/skyee-cards-db?replicaSet=rs0&authSource=admin
英文原文地址: https://bytemares.com/mongodb/docker/2019/10/01/simple-mongodb-replica-set-with-docker.html
注:我在原文基础上添加了创建用户步骤。
如果您喜欢本文,更多文章,欢迎订阅我的微信订阅号:open_dotNET