基于 Docker-compose 构建 MongoDB 副本集(带权限)

开头唠叨一下 💬

  • 本篇教程纯干货!不讲 MongoDB 副本集的原理!不讲 Docker-compose 的原理!
  • 干的不能再干的干货!
  • 本教程 Windows 可能劝退,仅在 MacLinux 上测试过

构建要点 📁

  • 须要在部署机器上生成 openssl 的 keyfile
  • 本教程没有把 MongoDB 的数据文件夹挂载出来(自行设置 volumes 便可)

构建步骤 📖

  • 一、确保你的机器上有 openssl 命令,不然没法生成 keyfile
  • 二、修改构建文件中的用户名,密码(你也能够不修改)
  • 三、执行构建脚本中的脚本
  • 四、😊 上述步骤都没问题以后,再参照构建以后的步骤进行操做。

构建脚本 💻

#!/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() 查看状态便可。
相关文章
相关标签/搜索