Связь с контейнером Docker от хоста и другого контейнера - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть 2 Docker-контейнера (используя Docker Toolbox в Windows и Docker Compose).Тот, который является сервером.Мне нужно, чтобы этот сервер опубликовал свой IP-адрес в базе данных, чтобы другие контейнеры могли взаимодействовать с ним, и, кроме того, клиентские приложения вне контейнеров в хост-приложении могут взаимодействовать с ним.

Теперь, если я использую его локальный IP-адрес, я не могу связаться с ним извне контейнера, поскольку попытка доступа к любому адресу 172.xxx.xxx.xxx не разрешится.Если я попытаюсь переадресовать порты на Virtualbox и использовать localhost в качестве опубликованного ip, контейнеры не смогут обмениваться данными с сервером, поскольку они не существуют в одной локальной сети, хотя я могу обмениваться данными с сервером с хоста..

Мой текущий файл docker-compose.yaml выглядит следующим образом:

version: '3.4'

services:
  server:
    build: ./server/
    ports: 
      - 4000:4000/udp
    depends_on:
      - mongo-db
      - app-server
    restart: on-failure
    environment:
      - HOSTIP=127.0.0.1 #External IP of the host (either docker host or server host). Used to publish on database

  app-server:
    build: ./app_server/
    ports:
      - 80:3000
      - 5000:5000
      - 7000:7000/udp
    depends_on:
      - mongo-db
    restart: on-failure

  mongo-db:
    image: mongo
    volumes: 
      - mongodata:/data/db
    ports: 
      - 27017:27017

volumes:
    mongodata:

Есть ли способ получить надежный IP-адрес, который можно использовать для связи контейнер-контейнер и контейнер-хостсвязь?Его не нужно передавать как переменную среды, если я могу получить его из контейнера, то это тоже здорово.Он просто должен быть опубликован в базе данных, а хост и другие контейнеры должны читать из этой базы данных, чтобы найти все доступные серверы, вместо того, чтобы напрямую связываться с сервером на основе функциональных возможностей Docker Compose's зависимость_on.

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