7

Bir çoğaltma kümesinde olması gereken 3 MongoDB sunucusunu başlatmak için docker-compose kullanıyorum.Docker-compose öğesinden MongoDB çoğaltma kümesini yapılandırma

İlk önce 3 MongoDB sunucusunu çalıştırıyorum, ardından çoğaltma kümesini yapıyorum. Bu ben bash script içinde çoğaltma kümesi yapılandırma yapacağını nasıl: Ben kullanarak yineleme kümesinin konfigüre edilmesini çoğaltmak için çalışıyorum

mongo --host 127.0.0.1:27017 <<EOF 
var cfg = { 
    "_id": "rs", 
    "version": 1, 
    "members": [ 
     { 
      "_id": 0, 
      "host": "127.0.0.1:27017", 
      "priority": 1 
     }, 

     // snip... 

    ] 
}; 
rs.initiate(cfg); 
rs.reconfig(cfg) 
EOF 

İşte liman işçisi-oluşturur.

# docker-compose.yml 

mongosetup: 
    image: mongo:3.0 
    links: 
    - mongo1:mongo1 
    command: echo 'var cfg = { "_id": "rs", "version": 1, "members": [ { "_id": 0, "host": "127.0.0.1:27017", "priority": 1 }, { "_id": 1, "host": "mongo2:27017", "priority": 1 },{ "_id": 2, "host": "mongo2:27017", "priority": 1 } ] }; rs.initiate(cfg);' | mongo mongo1 

Ne yazık ki bu şu hatayı oluşturur: yaml.scanner.ScannerError: mapping values are not allowed here.

Önerilen yaklaşım nedir? cfg nesnesini, docker-compose okumaları okuyan ayrı bir dosyada saklamak mümkün mü?

cevap

9

Yapılandırmayı, giriş noktasından aradığım setup.sh dosyasına koyarak çözdüm.

mongosetup: 
    image: mongo:3.0 
    links: 
    - mongo1:mongo1 
    - mongo2:mongo2 
    - mongo3:mongo3 
    volumes: 
    - ./scripts:/scripts 
    entrypoint: [ "/scripts/setup.sh" ] 

Ben mongodb-nehir ile ayarlanır ve ElasticSearch bir yineleme 3 MongoDBs başlar liman işçisi-oluşturmadeneyimine ile bir kurulum oluşturduk

#!/bin/bash 

MONGODB1=`ping -c 1 mongo1 | head -1 | cut -d "(" -f 2 | cut -d ")" -f 1` 

mongo --host ${MONGODB1}:27017 <<EOF 
    var cfg = { 
     "_id": "rs", 
     "version": 1, 
     "members": [ 
      { 
       "_id": 0, 
       "host": "${MONGODB1}:27017", 
[cut..] 
EOF 

setup.sh.

https://github.com/soldotno/elastic-mongo