есть ли способ соединить 2 докера, используя docker -compose файл без docker -swarm-mode - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу запустить веб-приложение и базу данных, используя Docker, есть ли способ соединить 2 докера (webApp Docker контейнер на одной машине и контейнер DB Docker на другой машине), используя docker -compose файл без docker -swarm-mode я имею ввиду 2 отдельных сервера Это мой Mongodb docker -композитный файл

version: '2'
services:
  mongodb_container:
    image: mongo:latest
    restart: unless-stopped
    ports:
      - 27017:27017
    volumes:
      - mongodb_data_container:/data/db

Вот мой demowebapp docker -композитный файл

version: '2'

services:
  demowebapp:
    image: demoapp:latest
    restart: unless-stopped
    volumes:
      - ./uploads:/app/uploads
    environment:
      - PORT=3000
      - ROOT_URL=http://localhost
      - MONGO_URL=mongodb://35.168.21.133/demodb
    ports:
      - 3000:3000

Может ли кто-нибудь подсказать мне, как это сделать

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вам не нужно ничего менять в показанных вами примерах файлов: вам нужно подключиться к IP-адресу другого хоста (или DNS-имени) и опубликованному ports:.

. на другом компьютере (или на другой виртуальной машине) никакие детали, относящиеся к Docker, больше не видны. С точки зрения системы, в которой выполняется веб-приложение, первая система работает под управлением MongoDB на порту 27017; он может работать на голом железе, в контейнере, или перенаправляться через порт от виртуальной машины, или использовать что-то вроде HAProxy для прохода из другой системы; буквально нет способа узнать.

Конфигурация, которую вы должны подключить к IP-адресу первого сервера, будет работать. Я бы настроил систему DNS, если у вас ее еще нет (BIND, AWS Route 53, ...), чтобы избежать необходимости жесткого кодирования IP-адреса. Вы также можете взглянуть на систему обнаружения сервисов (в прошлом мне повезло с консулом Хашикорпа), которая может отправить вас на «хост-систему, на которой запущен MongoDB», без необходимости знать, какая именно.

0 голосов
/ 22 апреля 2020

При использовании только одного docker-compose.yml с compose version: 2 невозможно развернуть 2 службы на двух разных машинах. Это то, для чего version: 3 используется stack.yml и swarm-mode.

Однако вы можете развернуть на двух разных машинах, используя две docker-compose.yml версии 2, но вам придется подключать их, используя разные имена хостов / ips, чем имя службы из compose-файла.

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