Учитывая, что у меня есть несколько веб-приложений, работающих в контейнерах докеров, я хочу, чтобы пользователь мог перенаправляться из одной службы в другую в своем браузере. Интересно, как этого добиться - особенно если я хочу, чтобы мои приложения можно было переносить с одного хоста докеров на другой.
Допустим, у нас есть ServiceA, который перенаправляет пользователя на ServiceB. Итак, у нас есть отношения
ServiceA --> ServiceB
Один из подходов заключался бы в статическом назначении портов и имен хостов и установке их в качестве переменных среды для моих веб-служб - что я бы не предпочел, потому что я не хочу заботиться о том, какая служба работает на каком порту.
Второй подход - иметь прокси, например nginx, связывать службы и использовать прокси-сервер и порт. Но для этого потребуется изменить конфигурацию прокси при перемещении службы на другой хост.
Третий подход, который приходит на ум, - использовать etcd и ambassadors для регистрации и разрешения сервисов. Таким образом, ServiceA будет использовать ServiceB-Ambassador, который ищет ServiceB в etcd. Это приводит к тому, что многие контейнеры докеров просто соединяются между службами.
Какой путь вы бы предпочли? Или есть разные подходы?
Изменить
Настоящая проблема заключается во внедрении uri ServiceB в ServiceA, поэтому я могу запустить свой ServiceA с аргументом типа -DserviceB.uri=<serviceUri>
, чтобы serviceA смогла создать правильный заголовок перенаправления.