开头唠叨一下 💬
- 本篇教程纯干货!不讲 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" }
]
}
)
复制代码