我正在使用docker-compose来启动3个应该在副本集中的MongoDB服务器.
我首先启动3个MongoDB服务器,然后配置副本集.
这就是我在bash script中执行副本集配置的方法:
mongo --host 127.0.0.1:27017 <
在这里,我试图使用docker-compose复制配置副本集.
# docker-compose.yml
mongosetup:
image: mongo:3.0
links:
- mongo1:mongo1
command: echo 'var cfg = { "_id": "rs","members": [ { "_id": 0,"priority": 1 },{ "_id": 1,"host": "mongo2:27017",{ "_id": 2,"priority": 1 } ] }; rs.initiate(cfg);' | mongo mongo1
不幸的是,这会产生此错误:yaml.scanner.ScannerError:此处不允许使用映射值.
我通过将配置放在我从入口点调用的setup.sh来修复问题.
mongosetup:
image: mongo:3.0
links:
- mongo1:mongo1
- mongo2:mongo2
- mongo3:mongo3
volumes:
- ./scripts:/scripts
entrypoint: [ "/scripts/setup.sh" ]
setup.sh
#!/bin/bash
MONGODB1=`ping -c 1 mongo1 | head -1 | cut -d "(" -f 2 | cut -d ")" -f 1`
mongo --host ${MONGODB1}:27017 <
我用docker-compose创建了一个设置,它在一个副本集中启动了3个MongoDB,在mongodb-river中启动了ElasticSearch.