我应该使用Nginx在生产中服务React吗?

时间:2020-04-12 21:06:35

标签: node.js reactjs nginx kubernetes dockerfile

我正在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;
    }
}

1 个答案:

答案 0 :(得分:2)

服务很好。 Nginx可能会使用较少的RAM来提供服务,但是通过携带所有您不使用的额外功能,这些RAM将被抵消。我们为许多K8s SPA使用了类似的Serve设置,在满载时每个Pod使用60至100MB的RAM。对于其他一些应用程序,我们有一个精简版的Caddy,它的最大容量约为70MB,而不是稍少一些,但可能有更好的方法来担心30MB的内存:)

相关问题