Служба, запущенная в Docker-контейнере, вызывает веб-службу, запущенную в другой службе в другом Docker-контейнере. - PullRequest
0 голосов
/ 10 мая 2019

В качестве аргумента, скажем, у меня есть 2 док-контейнера, контейнер A и контейнер B. Внутри контейнера A работает служба (служба A).Точно так же контейнер B имеет службу (службу B), работающую внутри него.Служба B предоставляет интерфейс веб-службы через порт 8082, и у нас есть отображение порта -p 8082: 8082, так что внешний мир может выполнить вызов веб-службы для службы B (например, http://some_ip:8082/somemethod).. Однако предположим, что службаA должен сделать тот же веб-вызов в службу B. Как бы это сделать? Возможно ли это?

Примечание: мне не нравится решение Docker Compose. Для этого по сути требуется наличие нескольких контейнеров для интимногознание других контейнеров. Кроме того, требуется, чтобы все контейнеры были размещены на одном и том же движке Docker. Это не сработает в реальном мире. Контейнер A принадлежит org A, а контейнер B принадлежит org B. Я могу получить доступ квеб-служба работает в контейнере B из внешнего мира, но я не могу получить доступ к тому же веб-методу из контейнера A. Это совсем не хорошо.

1 Ответ

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

Самый простой выбор: вы можете использовать Docker Compose , который создает сеть между контейнерами, так что вы можете совершать вызов из службы A, достигнув serviceB: 8082.Например, ваш docker-compose.yml может выглядеть следующим образом:

serviceA:
    image: myImage

serviceB:
    image: myOtherImage
    ports:
        - "8082:8082"

Без docker-compose вы можете создать сеть вручную и подключить ваши контейнеры:

docker network create myNetwork
# create containers for serviceA and serviceB...
docker network connect myNetwork serviceA
docker network connect myNetwork serviceB

Тогда ваши контейнеры будутбыть доступными друг другу либо по IP-адресу, либо по псевдониму.Больше информации о сетях здесь: https://docs.docker.com/network/bridge/

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