У меня есть угловое приложение, размещенное с помощью Node, а также есть бэкэнд с флешкой Python для других операций с Python. Поскольку это 2 отдельных модуля, я создал отдельные образы докеров для узла + угловая и колба питона. Для изоляции я также использовал сеть докеров для этих контейнеров.
Я создал изображения и запустил контейнеры с помощью следующих команд:
docker container run -d -p 5000:5000 --network reporter-net --name backend backend-server
docker container run -d -p 3000:3000 --network reporter-net --name frontend frontend-server
Но из внешнего интерфейса я вызывал бэкэнд с помощью URL-адреса
http://backend:5000
главным образом потому, что я думал, что связь происходит от контейнера узла к этому бэкэнду Python. Я также попытался вызвать Python Backend, используя этот URL http://backend:5000, и это работало без проблем.
После развертывания этой архитектуры она не может взаимодействовать с бэкэндом. Позже я понял от коллег, что во время работы угловой код будет загружен в браузер, а затем браузер напрямую вызывает бэкэнд Python.
В этом случае, очевидно, браузер не может определить http://backend:5000. Когда я попытался заменить его на http://localhost:5000,, он работал (оба на одной машине).
Но как я могу решить эту проблему во время работы в производстве? Потому что в производстве контейнер python может находиться на разных серверах, как в микросервисах. Так что может быть сложно получить ip сервера бэкэнда Python, а также он необходим перед созданием образа.
Есть ли другое простое решение для этого? Я слишком много думаю? И я также думаю об использовании ALB перед внутренними серверами (на производстве), чтобы мы могли создавать изображения внешнего интерфейса с помощью http://:5000, и он перенаправит запрос на любой http://backend:5000.
В поисках решения.