Я создаю SPA, используя React, и Node.js на Kubernetes. У меня есть отдельные сервисы и входы для фронт-энда и бэк-энда. Я видел, как люди также используют Nginx для обслуживания сборки React, но я обнаружил, что выполнение ниже хорошо работает.
# Dockerfile.production
FROM node:8.7.0-alpine
RUN mkdir -p /usr/app/client
WORKDIR /usr/app/client
COPY package*.json /usr/app/client/
RUN npm install
RUN npm install -g serve
COPY . /usr/app/client
EXPOSE 3000
RUN npm run build
CMD ["serve", "-s", "build", "-l", "3000" ]
В качестве альтернативы, я мог бы обработать сборку с Nginx, как показано ниже. Это кажется «правильным способом» сделать это, но я не уверен, какое преимущество имеет использование пакета serve npm, хотя мне это кажется очень хакерским. Кажется, что все, что может быть настроено с Nginx для обслуживания приложения, также может быть сделано в Ingress, верно?
server {
server_name example.com;
...
location ~ / {
root /var/www/example.com/static;
try_files $uri /index.html;
}
}