Учитывая, что у меня есть несколько веб-приложений, работающих в контейнерах докеров, я хочу, чтобы пользователь мог перенаправляться с службы на другую службу в своем браузере. Интересно, как добиться этого - особенно если я хочу, чтобы мои приложения были переносимыми с одного узла докеров на другой хост.Лучшая практика для перенаправления между контейнерами докеров
Предположим, у нас есть служба, которая перенаправляет пользователя на ServiceB. Таким образом, мы имеем отношения
ServiceA --> ServiceB
Один подход будет статически назначить порты и имена хостов и установить их в качестве среды вары моих веб-сервисов, - что я не предпочел бы, потому что я не хочу, чтобы заботиться о том, какие обслуживание выполняется на каком порту.
Второй подход должен состоять в том, чтобы иметь прокси-сервер, такой как nginx, и связать службы и использовать прокси-узел и порт. Но это потребует изменения конфигурации прокси-сервера при перемещении службы на другой хост.
Третий подход, который приходит на ум, заключается в использовании etcd и послов для регистрации и разрешения услуг. Поэтому ServiceA будет использовать ServiceB-Ambassador, который ищет ServiceB в etcd. Это приводит к тому, что многие контейнеры докеров соединяются между службами.
Какой способ вы предпочитаете? Или существуют разные подходы?
Редактировать
Реальная проблема заключается в впрыснуть УИР ServiceB в ServiceA, так что я могу запустить мой ServiceA с аргументом, как -DserviceB.uri=<serviceUri>
, так что serviceA может построить правильный заголовок переадресации.
Кристиан, когда вы говорите «перенаправлено с одной службы на другую службу в своем браузере» - разве это не означает, что вторая услуга должна быть общедоступной? Обычно контейнер-докер (услуга) не является общедоступным, поскольку он находится в частной сети. – wassgren
Несомненно, они оба доступны снаружи через картографирование портов. Например, docker run -p 8080 images/serviceA –
Возможный дубликат [Как связать службы Docker через узлы?] (Http://stackoverflow.com/questions/21283517/how-to-link-docker-services-across-hosts) – wassgren