Как Dockerise front-end приложению взаимодействовать с уже dockerised api приложением - PullRequest
2 голосов
/ 24 февраля 2020

В настоящее время я разрабатываю приложение, которое использует полностью докеризованную службу Node API (которая обслуживается локально Docker Nginx) и простой интерфейс React, который обслуживается локально с помощью PHP valet.

Запуск docker-compose up, сборка докеризованного приложения, успешно размещенного на Nginx на порту 80, и прокси-сервер передает запросы API узла на порт 9999.

Проблема, с которой я сталкиваюсь интерфейс реакции для связи с API докеризованного узла.

В идеале я бы хотел либо; переместите докеризованный сервис Node api, который будет обслуживаться PHP камердинером, или переместите интерфейсное веб-приложение, которое также будет обслуживаться docker nginx сервисом

Как полностью докеризировать интерфейс и фоновые сервисы вместе, чтобы они могли общаться друг с другом (в идеале оба размещены на порте 80) или альтернативно предлагать, как я могу использовать Valet или MAMP вместе с API-интерфейсом Node API в контейнерах.

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Как я могу полностью объединить интерфейсные и фоновые сервисы вместе, чтобы они могли общаться друг с другом (в идеале оба размещаются на порте 80) или, альтернативно, предложить, как я могу использовать Valet или MAMP вместе с контейнерами API узла.

С или без Docker вы будете сталкиваться с одной и той же политикой происхождения для запросов внешнего интерфейса к бэкэнду (XMLHttpRequest и некоторых других запросов), поскольку два URL имеют одинаковое происхождение если протокол, порт и хост совпадают .

Если бы эти два приложения были контейнерами, хосты отличались бы по дизайну, поскольку это будут два разных контейнера. И если бы вы сохранили приложение внешнего интерфейса на хосте, это также имело бы место.

Так что в любом случае вы должны включить CORS на стороне сервера (NodeJS) как минимум для запросов хоста внешнего интерфейса. Со стороны внешнего интерфейса ничего не нужно, поскольку CORS - это браузер: он отправляет предварительные запросы целевому хосту для получения соглашения о совместном использовании ресурсов.

О том, чтобы сделать внешний интерфейс контейнером Docker, я думаю, что если внешний интерфейс предназначен для работы с бэкэндом Node, вы, вероятно, должны также сделать это docker изображение / контейнер и использовать docker-compose для управлять ими: это сделает их более простыми в управлении / обслуживании.

0 голосов
/ 24 февраля 2020

Создайте внешний интерфейс для stati c HTML и подайте его из внутреннего интерфейса из каталога stati c.

Внешний интерфейс React загружается на компьютер пользователя и выполняется там. в их браузере. Он связывается с сервером через HTTP (S).

Как вы сейчас обслуживаете приложение React? Приложение React - это просто текстовые файлы, которые обслуживаются по HTTP.

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