Я - рой нук.У меня есть два приложения Python Flask, которые переносятся для запуска в качестве служб докеров, и одно необходимо вызвать другое.Я использую обратный прокси-сервер nginx для управления внешними подключениями к сервисам.
Настройки местоположения nginx:
location /alpha/ {
proxy_pass https://alpha-app:5000/;
}
location /beta/ {
proxy_pass https://beta-app:5001/;
}
При работе в Docker Swarm, где «demo» - имя стека:
$ sudo docker service ls:
NAME PORTS
demo_alpha *:3002->5000/tcp
demo_beta *:3001->5001/tcp
demo_nginx *:443->443/tcp
Я могу получить доступ к услугам извне по адресу:
https://my-host/alpha/some_endpoint
https://my-host/beta/some_endpoint
Теперь мне нужно, чтобы служба alpha вызывала службу в бета-версии.Если я запускаю приложения в обычных док-контейнерах, то работает следующий вызов из альфа-версии в бета-версию:
url = https://my-host/beta/some_endpoint
requests.get(url, cert, verify)
Обратите внимание, что при запуске в Docker Swarm приложения работают на разных хостах, но используют одну и ту же сеть.,Я не могу установить соединение между приложением и приложением, чтобы оно работало, когда приложения выполняются как службы в Docker Swarm.Я все еще могу позвонить в каждую службу приложений из-за пределов роя:
https://my-host/alpha/some_endpoint -> works
https://my-host/beta/some_endpoint -> works
Я не могу получить альфа-версию для использования службы из бета-версии.Я попытался просто использовать имя службы:
url = https://beta-app/some_endpoint -> connection refused
url = https://beta-app:5001/some_endpoint -> hostname doesn't match
url = https://my-host/beta/some_endpoint > name or service not known
запросы .get () всегда терпит неудачу
Какой правильный URL-адрес используется для одной службы Docker Swarm для вызова другой?Нужно ли искать внутренний IP-адрес службы?