Давайте сначала подумаем о развертывании. Вы упоминаете, что контейнеры Docker могут работать на разных машинах. Я рекомендую использовать контейнерные оркестраторы, такие как Docker Swarm или Kubernetes для управления кластером и связи между микросервисами (обычно через DNS).
Как правило, вы хотите скрыть все своимикросервисы за одним путем API. Внешний мир не должен знать, что ваше серверное приложение состоит из нескольких микросервисов. Вы можете использовать простой обратный прокси для этого. Мне лично нравится Traefik , потому что вы можете настроить пути маршрутизации в экосистеме Docker с помощью меток.
Вы говорите, что используете API микросервиса с браузером, так это приложение веб-клиента? Если это так, я рекомендую использовать его в качестве контейнера Docker и встраивать его в маршрутизацию, используя относительные пути. Например, пользовательский интерфейс обслуживается /
, а микросервисы - /api/{service}/{path}
. Тогда приложение пользовательского интерфейса может использовать относительные пути, поскольку они обслуживаются одним и тем же обратным прокси-сервером и такими же URL-адресами (=> нет проблем с CORS). Кроме того, вы можете развернуть на любой IP, маршрутизация остается прежней и не требует настройки