Решаю на первый взгляд тривиальную задачу, но как оказалось тут много подводных камней.
Есть некоторой колличество сервисов в контейнерах, сервисы все находятся в одной внутренней сети из соображений безопасности.
Но одному из сервисов так-же нужен доступ во внешнюю (локальную) сеть, он там должен уметь делать discovery.
А во внутреннюю сеть контейнер должен предоставлять REST API.
Но как сделать такое с помошью docker compose я так и не нашел. Сейчас у меня вот такой файл получился.
version: "3"
services:
telegram-bot:
container_name : telegram
image : basic
tty: true
networks:
- internal
broadlink-rest:
container_name : broadlink
image : basic
tty: true
network_mode: host
hostname: broadlink-rest
networks:
internal:
internal: true
Проблемы которые я не знаю как решить :
1. Из контейнера telegram-bot я могу пинговать ip адресса моей локальной сети, несмотря на то, что она internal: true
2. Контейнер broadlink-rest видит ВСЕ сетевые интерфейсы моей хостовой машины, а я бы хотел, чтоб видел только один.
3. Внутри сети контейнеры динамически получают свои ip адресса. Каждому контейнеру во внутренней сети желательно присвоить какой-то hostname по которому его будут трогать другие контейнеры.
П.С : Буду так-же благодарен за какой-то не наколеночный материал - книгу именно по сетевому взаимодействию докер контейнеров.