reactjs - 在 Google Kubernetes 上设置 react app build 文件夹

标签 reactjs kubernetes google-cloud-platform cloud google-kubernetes-engine

目前,我有一个包含 Node.js Express 后端和 React 前端的存储库。存储库的镜像位于 Google Container Registry 中,并在 Google Kubernetes 集群上使用。负载均衡器提供了一个 url,它是为静态 build 提供服务的后端 url服务器。将来,我想将后端/前端分成两个不同的存储库(一个用于后端,一个用于前端)。

我相信对集群中的后端进行更改并不困难,但是自从 build 以来,我无法弄清楚如何将 React 前端添加到此。文件夹将位于与后端不同的存储库中。我在网上看到要在 GCP 上提供 React 应用程序,您需要上传 build文件夹到存储桶上,并在 App Engine 上提供该存储桶,这将提供一个 url 以在网络上访问它。

我想知道这是否会在 Kubernetes 集群上完成,或者是否有不同的方法,因为它不使用 App Engine,而是使用 Google Kubernetes。

我希望这是有道理的(我对 Google Cloud 还是很陌生),任何反馈/提示都将不胜感激!

谢谢!

最佳答案

对此有不同的方法。

方法 1:通过 Google Cloud Storage 为您的前端服务。

GCP 文档中有一个指南:Hosting a static website进行设置。构建后将所有文件复制到云存储,您就完成了。

方法 2:在构建 Docker 镜像时将前端添加到后端

  • 构建您的前端并将其打包到一个 Docker 镜像中,如下所示:
  • FROM node AS build
    WORKDIR /app
    COPY . .
    RUN npm ci && npm run build
    
    FROM scratch
    COPY --from=build /app/dist /app
    
  • 构建您的后端并复制前端:
  • FROM myapp/frontend as frontend
    
    FROM node
    // build backend
    COPY --from=frontend /app /path/where/frontend/belongs
    

    这将两个构建解耦,但您将始终必须部署后端以进行前端更改。

    方法 3:使用 nginx(或其他 Web 服务器)为您的前端提供服务
    FROM node AS build
    WORKDIR /app
    COPY . .
    RUN npm ci && npm run build
    
    FROM nginx
    COPY --from=build /app/dist /usr/share/nginx/html
    

    您还可以调整 nginx.conf启用没有哈希路径的路由。见 this article by codecentric了解更多信息。

    关于reactjs - 在 Google Kubernetes 上设置 react app build 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58470835/

    相关文章:

    python - BigQuery Python API 问题

    database - 选择 Firestore 集合中的所有其他文档

    apache-spark - 在 Dataproc 上删除集群后,Apache Spark 检索存储在 gcs 中的表

    javascript - 尝试使用 React 在模态组件之间切换

    node.js - 运行 NodeJs kubernetes 客户端示例错误

    javascript - Draft js 保存和渲染或显示内容

    nginx - kubernetes nginx 入口错误与配置片段

    python - 如何检查 Kubernetes 网页为何不断加载?

    reactjs - 使用 jscodeshift 删除外部 React 组件

    javascript - 使用 Material-UI 创建自定义变体