Хочу в докере собрать кластер из пары монг.
беру докер от монги, собираю кластер в docker-compose
version: '3.4'
services:
mongo-ev-1:
networks:
- mongo
container_name: mongo-ev-1
restart: on-failure
image: mongo:4
ports:
- "7017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: test
MONGO_INITDB_ROOT_PASSWORD: test
MONGO_INITDB_DATABASE: test
command: mongod --replSet rs0
mongo-ev-2:
networks:
- mongo
container_name: mongo-ev-2
restart: on-failure
image: mongo:4
ports:
- "7018:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: test
MONGO_INITDB_ROOT_PASSWORD: test
MONGO_INITDB_DATABASE: test
command: mongod --replSet rs0
links:
- mongo-ev-1
volumes:
- ./docker-data/mongo:/docker-entrypoint-initdb.d
networks:
mongo:
driver: bridge
и кладу скрипт initCluster.sh в каталог docker-entrypoint-initdb.d :
mongo <<EOF
config = {
"_id": "rs0",
"members": [
{
"_id": 0,
"host": "mongo-ev-1:27017"
},
{
"_id": 1,
"host": "mongo-ev-2:27017"
}
]
};
rs.initiate(config, {"force": true});
rs.reconfig(config, { force: true });
EOF
Дальше смотрю как запущены в каждом докере монги:
docker exec -it mongo-ev-2 ps ax
PID TTY STAT TIME COMMAND
1 ? Ssl 0:05 mongod --replSet rs0 --auth --bind_ip_all
65 pts/0 Rs+ 0:00 ps ax
видно что опция replSet установлена, всё ок
в docker logs вижу ошибки:
Implicit session: session { "id" : UUID("4ef9e731-3529-4db3-895c-4baabbc08ea7") }
MongoDB server version: 4.2.0
{
"_id" : "rs0",
"members" : [
{
"_id" : 0,
"host" : "mongo-ev-1:27017"
},
{
"_id" : 1,
"host" : "mongo-ev-2:27017"
}
]
}
{
"ok" : 0,
"errmsg" : "This node was not started with the replSet option",
"code" : 76,
"codeName" : "NoReplicationEnabled"
}
2019-10-03T09:08:46.389+0000 E QUERY [js] uncaught exception: Error: Could not retrieve replica set config: {
"ok" : 0,
"errmsg" : "not running with --replSet",
"code" : 76,
"codeName" : "NoReplicationEnabled"
} :
rs.conf@src/mongo/shell/utils.js:1531:11
и что-то не вкурю что я не так делаю?
Перемещено a1batross из talks