在 .yml 文件中实施 docker mongodb 副本集配置设置

Implement docker mongodb replica set config settings inside .yml file

我已经设置了一个 MongoDB 副本集,它是 运行ning 正确的。 但是我想 运行 .yml 中的配置设置,而不是在副本集节点中启动。

通过配置设置我的意思是:

1.

config = {
  "_id": "comments",
  "members": [
    {
      "_id": 0,
      "host": "node1:27017"
    },
    {
      "_id": 1,
      "host": "node2:27017"
    },
    {
      "_id": 2,
      "host": "node3:27017"
    }
  ]
}

及以下:

2.

rs.initiate(config)

所以我想出了一个办法,希望它 helps.Below 我将 post 我的 .yml 文件,rsinit 文件和 rs.sh 文件,所有文件应该放在同一个location 为了工作,其余所有配置都写好了。

.yml 文件:

版本:'3.7' 服务: mongo1: 主机名:mongo1 container_name: 本地mongo1 图片:mongo 暴露: - 27017 端口: - 27017:27017 重启:总是 入口点:["/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0"] #卷: # - /data/db/mongotest:/data/db # 这是您的卷将保留的位置。例如音量方向 = ./volumes/mongodb

mongo2: 主机名:mongo2 container_name: 本地mongo2 图片:mongo 暴露: - 27017 端口: - 27018:27017 重启:总是 入口点:["/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0"]

mongo3: 主机名:mongo3 container_name: 本地mongo3 图片:mongo 暴露: - 27017 端口: - 27019:27017 重启:总是 入口点:["/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0"]

rsinit: 建造: 语境: 。 码头文件:rsinit depends_on: - mongo1 - mongo2 - mongo3 入口点:["sh"、“-c”、"rs.sh"]

rsinit(普通文本文件):

从mongo

添加rs.sh/usr/local/bin/

运行 chmod +x /usr/local/bin/rs.sh

rs.sh 文件:

!/bin/bash

回声"prepare rs initiating"

check_db_status() { mongo1=$(mongo --host mongo1 --port 27017 --eval "db.stats().ok" | tail -n1 | grep -E '(^|\s) 1($|\s)') mongo2=$(mongo --host mongo2 --port 27017 --eval "db.stats().ok" | tail -n1 | grep -E '(^|\s) 1($|\s)') mongo3=$(mongo --host mongo3 --port 27017 --eval "db.stats().ok" | tail -n1 | grep -E '(^|\s) 1($|\s)') 如果 [[ $mongo1 == 1 ]] && [[ $mongo2 == 1 ]] && [[ $mongo3 == 1 ]];然后 init_rs 别的 check_db_status 菲 }

init_rs() { ret=$(mongo --host mongo1 --port 27017 --eval "rs.initiate({ _id: 'rs0', members: [{ _id: 0, host: 'mongo1:27017' }, { _id: 1, host: 'mongo2:27017' }, { _id: 2, host: 'mongo3:27017' } ] })" > /dev/null 2>&1) }

check_db_status > /dev/null 2>&1

回声"rs initiating finished" 出口 0