Tôi đang sử dụng docker-compose để khởi động 3 máy chủ MongoDB cần được đặt trong một bản sao.Đặt cấu hình bản sao MongoDB từ docker-compose
Lần đầu tiên tôi khởi động 3 máy chủ MongoDB, sau đó tôi định cấu hình bộ bản sao. Đây là cách tôi sẽ làm bản sao bộ config trong một bash script:
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
Ở đây tôi đang cố gắng để tái tạo các cấu hình của bộ bản sao sử dụng Docker-soạn.
# 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
Thật không may là tạo lỗi này: yaml.scanner.ScannerError: mapping values are not allowed here
.
Cách tiếp cận được đề xuất là gì? Có thể lưu trữ đối tượng cfg trong một tệp riêng biệt mà các trình soạn thảo docker-compose đọc không?