Не удается подключиться к работающему Dockerized Mongo ReplSet - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь создать Mongo ReplicaSet, работающий локально, используя следующий файл docker-compose:

version: '2.0'

services:
  db01:
    image: mongo:3.4
    mem_limit: 512m
    restart: always
    ports:
      - "27017:27017"
    volumes:
      - datadb01:/data/db
      - ./etc/mongod.conf:/etc/mongod.conf
    command: mongod --smallfiles --noIndexBuildRetry --replSet rs0
    container_name: db01
    networks:
      - mongo

  db02:
    image: mongo:3.4
    mem_limit: 512m
    restart: always
    ports:
      - "27018:27017"
    volumes:
      -  datadb02:/data1/db
      - ./etc/mongod.conf:/etc/mongod.conf
    command: mongod --smallfiles --noIndexBuildRetry --replSet rs0
    container_name: db02
    networks:
      - mongo

Так что, похоже, это действительно работает!Я не буду публиковать все это, но когда я запускаю rs.status(), я получаю это:

{
  "set" : "rs0",
  ...
  "ok" : 1
}

Однако, когда я пытаюсь подключиться к replicaSet, а не просто к одному узлу, я получаю эту связкужурналов ошибок:

~/utils/infrastructure/content-repl-set [replay-content*]: mongo --host rs0/127.0.0.1:27017,127.0.0.1:27018
MongoDB shell version v4.0.0
connecting to: mongodb://127.0.0.1:27017,127.0.0.1:27018/?replicaSet=rs0
2018-09-10T17:50:42.173-0400 I NETWORK  [js] Starting new replica set monitor for rs0/127.0.0.1:27017,127.0.0.1:27018
2018-09-10T17:50:42.176-0400 I NETWORK  [js] Successfully connected to 127.0.0.1:27018 (1 connections now open to 127.0.0.1:27018 with a 5 second timeout)
2018-09-10T17:50:42.177-0400 I NETWORK  [js] changing hosts to rs0/db01:27017,db02:27017 from rs0/127.0.0.1:27017,127.0.0.1:27018
2018-09-10T17:50:42.177-0400 I NETWORK  [ReplicaSetMonitor-TaskExecutor] Successfully connected to 127.0.0.1:27017 (1 connections now open to 127.0.0.1:27017 with a 5 second timeout)
2018-09-10T17:50:42.684-0400 W NETWORK  [js] Unable to reach primary for set rs0

Мой лучший вывод из этого заключается в том, что оболочка mongo (и другие драйверы mongo, такие как pymongo) не знают имя контейнера, которое я указал вДокер контейнер.Есть ли способ предоставить эту информацию моей локальной машине?Или я не в курсе?Спасибо за вашу помощь

1 Ответ

0 голосов
/ 20 июня 2019

Вы используете MacOS?в этом случае кажется, что эти внутренние IP-адреса в Docker недоступны, поскольку сеть моста Docker (Linux) недоступна с хоста MacOS.

Больше здесь: https://docs.docker.com/docker-for-mac/networking/

...