У меня есть 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.