Автоматически добавлять Docker-контейнеры к хостам - PullRequest
1 голос
/ 04 мая 2019

Обычный рабочий процесс для меня - я запускаю docker-compose up во время разработки в веб-проекте, запускаю docker inspect repo_app_1 | grep IPAddress и затем захожу на ipaddress в браузере.

Вместо того, чтобы извлекать IP-адрес контейнера, я хочу добавить имя этого контейнера с его IP-адресом в файл hosts.

Каков наилучший способ сделать это?Конечно, возможно, я могу придумать один способ - перехватить команды docker и docker-compose, чтобы после каждого выполнения мы запускали скрипт, который запускает вывод docker container через awk и добавляет его в файл hosts, а также управляет им.удалить старые записи.

1 Ответ

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

Одна из возможностей - использовать Traefik , обратный прокси-сервер с поддержкой Docker, включающий собственную панель мониторинга.

См., Например, " Traefik на Docker для веб-разработчиков - с бонусом Let's Encrypt SSL! " от Juan Treminio , чтобы автоматически регистрировать свои контейнеры и получать к ним доступ через предопределенный URL.

Хуан описывает, как решить "танец порта":

Если порт 80 сопоставлен с веб-сервером-A, вы должны выбрать другой порт для привязки для веб-сервера-B и веб-сервера-C.
Это может быстро устареть, потому что вы должны помнить, что http://localhost идет к A, http://localhost:81 идет к B и http://localhost:82 идет к C.

Он указывает:

На виртуальных машинах эта проблема на самом деле не возникает, поскольку вы можете назначить статический IP-адрес вашим серверам и привязать его к файлу хостов вашей системы (/etc/hosts).
Контейнеры по своей природе эфемерны и обычно создаются не в сети вашего хоста, а в частных сетях со своими случайными IP-адресами в специальных диапазонах. Однако вы должны отредактировать /etc/hosts для каждой виртуальной машины, которую вы раскручиваете, и список увеличивается с числом проектов, которые вы обрабатываете.

Træfik решает обе эти проблемы, во-первых, избавляя от необходимости использовать порты в URL-адресах, а затем с помощью не нужно редактировать /etc/hosts вообще .

Новый контейнер зарегистрируется в сети док-станции Traefik (docker network create --driver bridge traefik_webgateway) с помощью:

docker run -d --name some-mailhog \
    --network traefik_webgateway \
    --label traefik.docker.network=traefik_webgateway \
    --label traefik.frontend.rule=Host:mailhog.localhost \
    --label traefik.port=8025 \
    mailhog/mailhog

URL становится простым http://mailhog.localhost.

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