Docker: несколько сервисов в одном контейнере, как получить доступ к localhost? - PullRequest
0 голосов
/ 19 июня 2020

Добрый день, SO,

Я установил flask серверную часть и реагирую на нее в одном контейнере с базой образов -buster (Debian) и запускаю оба, используя Supervisord (я знаю, что это не очень хорошая практика , но это необходимо для моего использования ..). Как мой компонент внешнего интерфейса реагирования может получить доступ к конечным точкам сервера flask? Есть ли способ проверить порты, которые являются «активными» в операционной системе Debian?

Мой интерфейс использует порт 3000, при этом порт доступен для моей машины во время выполнения команды Docker:

docker run -it --rm -p 3000:3000 test_app

Мой бэкэнд использует порт 5000, и я не хочу открывать порт для моей машины, поэтому я не раскрыл его с помощью -p 5000: 5000

Как я могу получить свой реагировать на интерфейс для доступа к конечным точкам бэкенда flask в контейнере Docker? Может быть, это конфигурация супервизора?

Извините, я новичок в Docker, и любые рекомендации будут очень признательны.

1 Ответ

0 голосов
/ 19 июня 2020

Если вы имеете в виду, что у вас есть веб-сервер, работающий на порте 3000, и другой внутренний сервер, работающий в том же контейнере, и вы хотите получить доступ к бэкэнду с веб-сервера, тогда вы можете использовать интерфейс localhost.


Если вы хотите подключиться к бэкэнду из своего реагирующего приложения, которое полностью на стороне клиента запускает браузер пользователя, тогда вы не можете получить доступ к бэкэнду по адресу localhost. Вам нужно будет опубликовать sh внутренний порт и подключиться через него.


Вместо этого вы можете использовать шлюз обратного прокси, такой как nginx, обслуживающий как внешний, так и внутренний API. https://microservices.io/patterns/apigateway.html

...