Создать Docker соединение между контейнерами NodeJS + MongoDB - PullRequest
0 голосов
/ 29 августа 2018

Основная задача - запустить докер на портах и ​​подключиться к ним через локальный хост.

Как это должно работать:


Сервис № 1 (./service_one/docker-compose.yml)

NodeJS # 1 через порт 3001

MongoDB # 1 через порт 27018

Узел # 1 подключается к MongoDB # 1 как localhost:27018 (или по умолчанию localhost:27017)


Сервис № 2 (./service_two/docker-compose.yml)

NodeJS # 2 через порт 3002

MongoDB # 2 через порт 27019

Узел № 2 подключается к MongoDB # 1 через localhost:27018 и MongoDB # 2 через localhost:27019 (или по умолчанию localhost:27017)


NodeJS # 1 доступен через http://localhost:3001/.

NodeJS # 2 доступен через http://localhost:3002/.

MongoDB # 1 доступен через localhost:27018.

MongoDB # 2 доступен через localhost:27019.


Текущее состояние конфигурации:

version: '3.1'
services:
  node-users:
    container_name: node-users
    command: "npm start"
    depends_on:
      - mongo-users
    expose:
      - 3001
    image: node:10.9.0
  mongo-users:
    container_name: mongo-users
    expose:
      - 27018
    image: mongo:4.0.1
    ports:
      - 27018:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: user
      MONGO_INITDB_ROOT_PASSWORD: user
      MONGO_INITDB_DATABASE: user
    hostname: mongo-users

И второй.

version: '3.1'
services:
  node-auth:
    container_name: node-auth
    command: "npm start"
    depends_on:
    - mongo-auth
    expose:
    - 3002
    image: node:10.9.0
  mongo-auth:
    container_name: mongo-auth
    expose:
    - 27019
    image: mongo:4.0.1
    ports:
    - 27019:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: auth
      MONGO_INITDB_ROOT_PASSWORD: auth
      MONGO_INITDB_DATABASE: auth
    hostname: mongo-auth
    # network_mode: host won't work on docker for Mac!!!
    network_mode: host

Очень странно, но нет понятного учебника, как это сделать.

Update.

В примере я хочу подключиться к MongoDB # 1 с NodeJS # 1 .

Моя строка подключения будет:

mongodb://user:user@mongo-users:27017/user

Который работает отлично. Но при использовании его с NodeJS # 2 невозможно достичь mongo-users, потому что network_mode: host не работает на Mac (и нормально на Windows или любом Linux). Так что мои контейнеры просто не работают на компьютерах других людей.

failed to connect to server [mongo-users:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND mongo-users mongo-users:27017]

Я пытался использовать bridge, создать сеть. Но ни одно из решений не работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...