Коллекция сессий не настроена; ожидание до следующего сеанса refre sh интервал: репликация еще не настроена - PullRequest
0 голосов
/ 07 января 2020

У меня есть файл docker -compose.yml, который составляет три контейнера mon go, который включает три набора реплик, мои контейнеры создаются без проблем, но setupmon go. sh не работает, когда мои службы запускаются правильно. Я имею в виду, что функция rs.initiate () не работает с файлом bash, но когда я пытаюсь запустить функцию rs.initiate () с ее параметрами вручную (в интерактивном терминале docker), она работает правильно, мои реплики работают так, как должны быть. В результате мне нужно запустить функцию rs.initiate () для bash file

Здесь мой docker -compose.yml файл

version: "3.3"
services:
  mongo1:
    hostname: mongo1
    container_name: mongo1
    image: mongo:4.0.4
    command: mongod --replSet devrs
    volumes:
      - ./mongodb/data1/db:/data/db
      - ./mongodb/data1/configdb:/data/configdb
    networks:
      - mongo-dev-net
    expose:
      - 27017
    ports:
      - 30001:27017
    restart: always

  mongo2:
    hostname: mongo2
    container_name: mongo2
    image: mongo:4.0.4
    command: mongod --replSet devrs
    volumes:
      - ./mongodb/data2/db:/data/db
      - ./mongodb/data2/configdb:/data/configdb
    networks:
      - mongo-dev-net
    expose:
      - 27017
    ports:
      - 30002:27017
    restart: always

  mongo3:
    hostname: mongo3
    container_name: mongo3
    image: mongo:4.0.4
    command: mongod --replSet devrs
    volumes:
      - ./mongodb/data3/db:/data/db
      - ./mongodb/data3/configdb:/data/configdb

    networks:
      - mongo-dev-net
    expose:
      - 27017
    ports:
      - 30003:27017
    restart: always

  mongo-config:
    container_name: mongo-config
    image: alpine
    networks:
      - mongo-dev-net
    depends_on:
      - mongo1
      - mongo2
      - mongo3
    volumes:
      - ./setupmongo.sh:/setupmongo.sh
    entrypoint: ["/setupmongo.sh"]

networks:
  mongo-dev-net:

И setupmon go. sh file

#!/bin/bash

echo "Start"

mongo  <<EOF
rs.config()

rs.initiate(
{
    "_id" : "devrs",
    "members" : [
        {
            "_id" : 0,
            "host" : "mongo1:27017",
            "priority": 2
        },
        {
            "_id" : 1,
            "host" : "mongo2:27017",
            "priority": 0
        },
        {
            "_id" : 2,
            "host" : "mongo3:27017",
            "priority": 0
        }
    ]
}
)
EOF

Последний набор реплик не инициализирован

1 Ответ

0 голосов
/ 07 января 2020

Порты 30001, 30002 и 30003 - это порты HOST, а не CONTAINER, как вы настроили. Формат HOST:CONTAINER. См. документацию .

Итак, вам необходимо подключиться к 27017 каждого контейнера и соответственно изменить точку входа: mongo1:27010, mongo2:27010, mongo3:27010.

И это сработает, потому что вы уже выставили этот порт в каждом контейнере.

...