在Windows上使用Docker 建立MongoDB 副本集的極簡方法(翻譯)
阿新 • • 發佈:2021-10-24
這篇部落格介紹下在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
如果您喜歡本文,更多文章,歡迎訂閱我的微信訂閱號:open_dotNET英文原文地址: https://bytemares.com/mongodb/docker/2019/10/01/simple-mongodb-replica-set-with-docker.html
注:我在原文基礎上添加了建立使用者步驟。