開頭嘮叨一下 💬
- 本篇教程純乾貨!不講 MongoDB 副本集的原理!不講 Docker-compose 的原理!
- 乾的不能再幹的乾貨!
- 本教程
Windows
可能勸退,僅在 Mac
和 Linux
上測試過
構建要點 📁
- 須要在部署機器上生成
openssl
的 keyfile
- 本教程沒有把
MongoDB
的數據文件夾掛載出來(自行設置 volumes
便可)
構建步驟 📖
- 一、確保你的機器上有
openssl
命令,不然沒法生成 keyfile
- 二、修改構建文件中的用戶名,密碼(你也能夠不修改)
- 三、執行構建腳本中的腳本
- 四、😊 上述步驟都沒問題以後,再參照構建以後的步驟進行操做。
構建腳本 💻
#!/bin/bash
mkdir $HOME/.mongoReplSet/keyfile
openssl rand -base64 745 > $HOME/.mongoReplSet/keyfile/mongoReplSet-keyfile
chmod 600 $HOME/.mongoReplSet/keyfile/mongoReplSet-keyfile
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" }
]
}
)
複製代碼