【问题标题】:Implement docker mongodb replica set config settings inside .yml file在 .yml 文件中实现 docker mongodb 副本集配置设置
【发布时间】:2019-11-19 09:41:33
【问题描述】:

我设置了一个运行正常的 MongoDB 副本集。 但我想在 .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)

【问题讨论】:

    标签: mongodb docker-compose config replicaset rs


    【解决方案1】:

    所以我想出了一个方法,希望对你有帮助。下面我将发布我的 .yml 文件、rsinit 文件和 rs.sh 文件,所有文件都应该放在同一个位置才能工作,其余所有配置都是还是写好了。

    .yml 文件:

    版本:'3.7' 服务: 蒙哥1: 主机名:mongo1 容器名称:localmongo1 图片:蒙哥 暴露: - 27017 端口: - 27017:27017 重启:总是 入口点:["/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0"] # 卷: # - /data/db/mongotest:/data/db # 这是你的卷将持续存在的地方。例如VOLUME-DIR = ./volumes/mongodb

    mongo2: 主机名:mongo2 容器名称:localmongo2 图片:蒙哥 暴露: - 27017 端口: - 27018:27017 重启:总是 入口点:["/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0"]

    mongo3: 主机名:mongo3 容器名称:localmongo3 图片:蒙哥 暴露: - 27017 端口: - 27019:27017 重启:总是 入口点:["/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0"]

    rsinit: 建造: 语境: 。 dockerfile: rsinit 取决于: - 蒙戈1 - mongo2 - mongo3 入口点:["sh", "-c", "rs.sh"]

    rsinit(普通文本文件):

    来自蒙哥

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

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

    rs.sh 文件:

    !/bin/bash

    echo "准备启动"

    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,主机:'mongo2:27017'},{_id:2,主机:'mongo3:27017'}]})" > /dev/null 2>&1) }

    check_db_status > /dev/null 2>&1

    echo "rs 启动完成" 0号出口

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2013-10-22
      • 1970-01-01
      相关资源
      最近更新 更多