基於 Docker-compose 構建 MongoDB 副本集(帶許可權)
阿新 • • 發佈:2019-12-31
開頭嘮叨一下 ?
- 本篇教程純乾貨!不講 MongoDB 副本集的原理!不講 Docker-compose 的原理!
- 乾的不能再幹的乾貨!
- 本教程
Windows
可能勸退,僅在Mac
和Linux
上測試過
構建要點 ?
- 需要在部署機器上生成
openssl
的 keyfile - 本教程沒有把
MongoDB
的資料資料夾掛載出來(自行設定volumes
即可)
構建步驟 ?
- 1、確保你的機器上有
openssl
命令,否則無法生成keyfile
- 2、修改構建檔案中的使用者名稱,密碼(你也可以不修改)
- 3、執行構建指令碼中的指令碼
- 4、? 上述步驟都沒問題之後,再參照構建之後
構建指令碼 ?
#!/bin/bash
# 生成 keyfile
mkdir $HOME/.mongoReplSet/keyfile
openssl rand -base64 745 > $HOME/.mongoReplSet/keyfile/mongoReplSet-keyfile
chmod 600 $HOME/.mongoReplSet/keyfile/mongoReplSet-keyfile
# 啟動 Docker
docker-compose -f local-mongo.yml up -d
複製程式碼
構建檔案 ?
version: '3.1'
services:
mongo1:
image: mongo
hostname: mongo1
container_name: mongo1
restart: always
ports:
- 27017:27017
volumes:
- $HOME/.mongoReplSet/keyfile:/data/keyfile
environment:
MONGO_INITDB_ROOT_USERNAME: rootMongoDB
MONGO_INITDB_ROOT_PASSWORD: rootMongoDB20191105
command: mongod --auth --keyFile /data/keyfile/mongoReplSet-keyfile --bind_ip_all --replSet rs0
mongo2:
image: mongo
hostname: mongo2
container_name: mongo2
restart: always
ports:
- 27018:27017
volumes:
- $HOME/.mongoReplSet/keyfile:/data/keyfile
environment:
MONGO_INITDB_ROOT_USERNAME: rootMongoDB
MONGO_INITDB_ROOT_PASSWORD: rootMongoDB20191105
command: mongod --auth --keyFile /data/keyfile/mongoReplSet-keyfile --bind_ip_all --replSet rs0
mongo3:
image: mongo
hostname: mongo3
container_name: mongo3
restart: always
ports:
- 27019:27017
volumes:
- $HOME/.mongoReplSet/keyfile:/data/keyfile
environment:
MONGO_INITDB_ROOT_USERNAME: rootMongoDB
MONGO_INITDB_ROOT_PASSWORD: rootMongoDB20191105
command: mongod --auth --keyFile /data/keyfile/mongoReplSet-keyfile --bind_ip_all --replSet rs0
複製程式碼
構建之後 ?
- 啟動之後按以下流程進行:
docker exec -it mongo1 /bin/bash
- 進入
docker
以後,mongo -u <使用者名稱> -p <密碼>
-
rs
初始化
rs.initiate( { _id : 'rs0',members: [ { _id : 0,host : "mongo1:27017" },{ _id : 1,host : "mongo2:27017" },{ _id : 2,host : "mongo3:27017" } ] } ) 複製程式碼
- 最後通過
rs.status()
檢視狀態即可。