Как обновить docker-compose external_links dns - PullRequest
0 голосов
/ 15 мая 2019

У меня есть службы, определенные в трех файлах docker-compose. Один со службами, два других - синий и зеленый экземпляры моего приложения.

Все совместно используют одни и те же внешние сети, и службы создаются между файлами компоновки, используя external_links

Иногда при переключении между синим и зеленым IP-адреса меняются, мне нужно перезапустить службы, чтобы обновить IP-адрес в контейнерах служб.

Есть ли возможность динамически обновлять ссылки Docker, поэтому мне не нужно перезапускать мой контейнер nginx, создавая период недоступности?

1 Ответ

0 голосов
/ 15 мая 2019

Ссылки - неправильный способ сделать это. Ссылки работают путем изменения файла хоста контейнера, но эта модификация не обновляется при замене целевого контейнера. Они в значительной степени устарели из-за различных проблем, подобных этой.

Удалите ссылки из вашего файла компоновки и поместите контейнеры в обычную сеть, созданную пользователем (т.е. не в одну из нескольких сетей, предоставляемых докером по умолчанию). «Из коробки» compose предоставит вам сеть, созданную пользователем для ваших сервисов (сеть по умолчанию ${project}_default, которую вы можете увидеть с помощью docker network ls), или вы можете указать внешние сети при подключении контейнеров из нескольких проектов.

В общей сети docker предоставит вам разрешение DNS на основе имени контейнера и любых сетевых псевдонимов. С docker-compose у вас будут сетевые псевдонимы, настроенные из коробки для имен сервисов. Поэтому, если у вас есть служба с именем «web», вы можете запустить curl http://web:8080, чтобы подключиться к порту 8080 на любой из реплик службы «web». Этот пользовательский опыт идентичен при переходе в режим роя, хотя он реализован с использованием VIP, а не DNS-RR, который обрабатывает такие проблемы, как кэшированные записи DNS во время непрерывного обновления.

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