簡體   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