Estoy construyendo un SPA con React y Node.js en Kubernetes. Tengo servicios e ingresos separados para los servicios de front-end y back-end. He visto a personas que también usan Nginx para servir la compilación de React, pero descubrí que hacerlo a continuación funciona bien.
# 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" ]Alternativamente, podría servir la compilación con Nginx como la siguiente. Esta parece ser "la forma correcta" de hacerlo, pero no estoy seguro de cuál es la ventaja de usar el paquete serve npm, aunque me parece muy complicado. Parece que todo lo que se puede configurar con Nginx para servir la aplicación también se puede hacer en Ingress, ¿verdad?
server { server_name example.com; ... location ~ / { root /var/www/example.com/static; try_files $uri /index.html; } }Servir está bien. Nginx puede usar algunos bytes menos de RAM para servir, pero eso se cancelará al llevar todas las funciones adicionales que no está usando. Usamos una configuración similar de Serve para muchos de nuestros K8s SPA y usa entre 60 y 100 MB de RAM por módulo a plena carga. Para algunas otras aplicaciones, tenemos una versión reducida de Caddy y alcanza un máximo de alrededor de 70 MB, un poco menos, pero probablemente haya mejores formas de preocuparse por los 30 MB de RAM :)