我正在Kubernetes上使用React和Node.js构建SPA。我为前端和后端服务分别提供服务和入口。我已经看到人们也使用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;
}
}
答案 0 :(得分:2)
服务很好。 Nginx可能会使用较少的RAM来提供服务,但是通过携带所有您不使用的额外功能,这些RAM将被抵消。我们为许多K8s SPA使用了类似的Serve设置,在满载时每个Pod使用60至100MB的RAM。对于其他一些应用程序,我们有一个精简版的Caddy,它的最大容量约为70MB,而不是稍少一些,但可能有更好的方法来担心30MB的内存:)