Fullstack архитектура с react-приложением и nginx

Строю архитектуру для сильно нагруженных сервисов и не совсем уверен в том, что должно делать приложение на React в связке с Nginx.
Например: Пользователь по URL стучится в Nginx. Nginx работая как прокси-сервер перенаправляет запрос на приложение React. Приложение React каким-то образом надо развернуть как веб-сервер? (serve / nodejs express / next.js) И в случае, если потребуется обращение к данным в бд, уже методами nodejs обращаться далее к бекенду?

Nginx же тоже можно настроить как веб-сервер для раздачи статичных файлов. Но как тогда посылать запрос на бекэнд и обрабатывать ответ...

При этом, каждый кубик - это отдельный docker контейнер.

Вопрос: как нужно deploy react приложение в моем случае? Как отдельный webservis?

введите сюда описание изображения


Ответы (2 шт):

Автор решения: Александр Бреус

Nginx отдает статику, т.е ui сборку react, ui стучится дальше к api, через тот же nginx, который по url проксирует запрос в нужный сервис.

→ Ссылка
Автор решения: L0mchansky

В общем и целом суть такова:

С помощью команды react-scripts build создается в отдельной папке (build) в корне проекта собранный и оптимизированный пакет для дальнейшего использования.

Размещаешь его на веб-хостинге, рядом кладешь файл docker (Dockerfile) (Пример ниже)

# pull official base image
FROM node:20.12.2-alpine

# set working directory
WORKDIR /app

# install app dependencies
COPY ./build/ ./build
RUN npm install -g serve

# start app
EXPOSE 3000
ENTRYPOINT ["serve", "-s", "build"]
→ Ссылка