首页 > 解决方案 > 如何在 React 中使用在 Google Cloud Run Dashboard 上声明的 ENV 变量

问题描述

我正在使用 Dockerfile 将 create-react-app 服务部署到 Google Cloud Run,但我想摆脱在 .env 文件中声明 env 变量,而是在 Google Cloud Run 的仪表板上声明它们,如下所示:

仪表板图像

但是,当我使用

console.log("REDIRECT", process.env.REACT_APP_REDIRECT_URI)

对于我尝试引用的任何环境变量,都会返回 null。是否有另一个步骤来访问我缺少的这些变量?

这是我的 Dockerfile:

FROM node:10-alpine as react-build
WORKDIR /app
COPY . ./
RUN yarn
RUN yarn build

FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/configfile.template
ENV PORT 8080 
ENV HOST 0.0.0.0
RUN sh -c "envsubst '\$PORT'  < /etc/nginx/conf.d/configfile.template >      /etc/nginx/conf.d/default.conf"
COPY --from=react-build /app/build /usr/share/nginx/html
EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]

标签: reactjsdockergoogle-cloud-platformenvironment-variablesgoogle-cloud-run

解决方案


您的容器仅提供静态文件(通过 NGINX),并且在 Cloud Run 端不执行任何处理。

实际上,您将静态文件公开给用户。用户获取文件并将其加载到浏览器中。用户浏览器执行 Javascript 并读取当前环境下的 Env 变量:用户浏览器。

因此,此用例中未使用 Cloud Run env var。您必须在 Cloud Run 上执行处理才能使用 Cloud Run 环境变量。


推荐阅读