【问题标题】:How to override env variables in React JS application with Kuberenetes?如何使用 Kubernetes 覆盖 React JS 应用程序中的环境变量?
【发布时间】:2021-12-09 03:19:29
【问题描述】:

我有一个简单的 React JS 应用程序,它使用 .env 文件中定义的环境变量(REACT_APP_BACKEND_SERVER_URL)。现在我正在尝试使用 Kubernetes 将此应用程序部署到 minikube。

这是我的部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-ui
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test-ui
  template:
    metadata:
      name: test-ui-pod
      labels:
        app: test-ui
    spec:
      containers:
        - name: test-ui
          image: test-ui:1.0.2
          ports:
            - containerPort: 80
          env:
            - name: "REACT_APP_BACKEND_SERVER_URL"
              value: "http://127.0.0.1:59058"

当我运行应用程序时,它正在工作,但 REACT_APP_BACKEND_SERVER_URL 给出了我在 .env 文件中定义的值。不是我要压倒的那个。有人可以帮我吗?如何使用 Kubernetes 部署覆盖 env 变量?

【问题讨论】:

  • 你能分享一些关于你的项目结构的信息 - 以及项目是如何构建的吗? Dockerfile 是什么样的?
  • 嗨@alex 我正在尝试这个repo:github.com/pelthepu/todo-ui.git

标签: reactjs kubernetes minikube


【解决方案1】:

使用您的部署 YAML 启动应用程序并检查环境变量后,我看到了该环境变量的环境变量。

REACT_APP_BACKEND_SERVER_URL=http://127.0.0.1:59058

您可以通过执行kubectl exec -it <pod-name> -- sh 并运行env 命令来检查。

所以你可以在环境变量中看到REACT_APP_BACKEND_SERVER_URL 。它可供您的应用程序使用。我怀疑您可能需要从 React 应用程序方面更好地了解如何使用 .env 文件。

【讨论】:

  • 是的@alex 我也这样做了。我可以看到容器内的环境变量。但这些在浏览器中不可用。
  • 替换 fetch() 函数以使用配置的 backed, If (process.env.REACT_APP_BACKEND_API_BASE_URL !== undefined & & process.env.REACT_APP_BACKEND_API_BASE_URL !==0 { applyBaseUrlToFetch(process.env .REACT_APP_BACKEND_API_BASE_URL);}
猜你喜欢
  • 1970-01-01
  • 2018-02-28
  • 2021-10-11
  • 1970-01-01
  • 2019-12-02
  • 2016-03-13
  • 1970-01-01
  • 2020-01-31
  • 2018-12-21
相关资源
最近更新 更多