繁体   English   中英

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

[英]Implement docker mongodb replica set config settings inside .yml file

我设置了一个运行正常的 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)

所以我想出了一个办法,希望对你有帮助。下面我将发布 my.yml 文件、rsinit 文件和 rs.sh 文件,所有文件都应该放在同一个位置才能工作,rest 无论如何都要编写所有配置。

.yml 文件:

版本:'3.7' 服务:mongo1:主机名:mongo1 容器名称:localmongo1 图像:mongo 公开:- 27017 端口:- 27017:27017 重启:始终入口点:[“/usr/bin/mongod”、“--bind_ip_all”、“ --replSet", "rs0"] # volumes: # - /data/db/mongotest:/data/db # 这是你的卷将持续存在的地方。 例如 VOLUME-DIR =./volumes/mongodb

mongo2:主机名:mongo2 容器名称:localmongo2 图像:mongo 公开:- 27017 端口:- 27018:27017 重启:始终入口点:[“/usr/bin/mongod”、“--bind_ip_all”、“--replSet”、“rs0 "]

mongo3:主机名:mongo3 container_name:localmongo3 图像:mongo 公开:- 27017 端口:- 27019:27017 重启:始终入口点:[“/usr/bin/mongod”、“--bind_ip_all”、“--replSet”、“rs0 "]

rsinit:构建:上下文:。 dockerfile:rsinit 依赖于:- mongo1 - mongo2 - mongo3 入口点:[“sh”,“-c”,“rs.sh”]

rsinit(普通文本文件):

从蒙哥

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

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

rs.sh 文件:

!/bin/bash

echo "准备 rs 启动"

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)' ) if [[ $mongo1 == 1 ]] && [[ $mongo2 == 1 ]] && [[ $mongo3 == 1 ]]; 然后 init_rs 否则 check_db_status fi }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM