Заранее прошу прощения за длину - но это интересно, особенно для архитекторов и мастеров traefik.
Суть в том, что я надеюсь, что есть установка, в которой мы можем использовать traefik
s возможность динамической конфигурации:
автоматически обнаруживать, когда контейнер остановлен, и знать, как откатиться к внешним службам на машине разработчика / внешнем хосте.
В качестве альтернативы - когда запускается контейнер local-db, знайте, что он лучше, чем служба db из внешнего источника.
Мне нужно оптимизировать рабочий процесс для пары команд.
Это требует, чтобы на машине разработчика запускался абсолютный минимум. Текущее решение относится к docker-compose и traefik@1.x
, и меня просят сохранить это, однако я считаю, что обновление до traefik@2.x
будет принято.
На самом деле я рассматриваю с вами два варианта использования, которые, как мне кажется, имеют одно и то же решение - по крайней мере, теоретически ...
Dev-Mode = running a process in debug mode, with IDE, file-watch live reloads, etc.
AS A - developer of services in mid layers of the service mesh
I WANT - to be able to direct traffic to services under development to
native processes on my machine, and keep the rest in the compose
network
SO THAT - I can run in Dev-Mode only services under development,
while all the rest in the mesh run using production-level docker
images in docker-compose.
AS A - developer of data brokers in the mesh
I WANT - to control if containers get to the shared db or to local
db container using traefik
SO THAT - I can keep applications in the containers completely agnostic to
the topography in which they run
Для начала - поскольку Traefik - это служебная шина, через которую проходят все межконтейнерные коммуникации - я ищу способ настройки traefik
потреблять услуги от вне сеть docker-compose.
Первый вариант использования означает использование traefik
в качестве служебной шины - единственного объекта, который знает, где работает каждая служба, который может быть контейнером или службой, внешней по отношению к сети docker-compose.
Второй вариант использования означает настройку traefik
для направления трафика процессу выполняется за пределами сети docker-compose, но конкретно на машине разработчика, который, в свою очередь, потребляет службы из compose-сети (для этого разработчик compose, в отличие от production compose - предоставляет точку входа для каждого узла в сетке, включая для услуг, которые используются только для внутренних нужд производства).
Я знаю, что здесь есть два вопроса, но я не мог придумать другого способа задать каждый вопрос отдельно и получить ответы, относящиеся к полной картине ...
Я надеюсь, что есть установка, в которой мы сможем использовать traefik
s возможность динамической конфигурации:
автоматически обнаруживать, когда контейнер остановлен, и знать, как откатиться к внешним службам на машине разработчика или на любом другом хосте, если это необходимо. В качестве альтернативы - когда контейнер db запущен, он знает, что предпочесть ему внешнюю службу db.
Мы можем попросить разработчиков добавить записи в свои hosts
файл, но решение на основе DNS было бы намного предпочтительнее, особенно если мы можем использовать встроенный DNS для докера :)
Любая помощь или указание в правильном направлении были бы очень признательны!
Я сделал это.
Ознакомьтесь с изолированным решением, продемонстрированным здесь:
https://github.com/osher/lcdev-using-compose-and-traefik
TL; DR:
host.docker.internal
.Результат:
traefik
попробую девелоперскую машину.