首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在云运行中使用使用react?

如何在云运行中使用使用react?
EN

Stack Overflow用户
提问于 2022-10-01 14:33:12
回答 2查看 233关注 0票数 0

我正在开发一个使用一些敏感API密钥的react网站。

我在Google上托管应用程序,通过一个容器运行。

我想通过谷歌云秘密管理器访问API密钥,但我不能。当我尝试访问它们时,返回是“未定义的”。

下面是我的代码片段:

代码语言:javascript
复制
console.log(process.env.REACT_APP_API_KEY)

以及Dockerfile:

代码语言:javascript
复制
FROM node:14-alpine AS builder
WORKDIR /app
COPY package.json ./
COPY yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .
RUN yarn build

FROM nginx:1.19-alpine AS server
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder ./app/build /usr/share/nginx/html

我使用gcloud命令部署应用程序:

代码语言:javascript
复制
gcloud run deploy test-gcr-react \
--image gcr.io/test-gcr-react-app/test-gcr-react \
--region=southamerica-east1 \
--set-secrets=REACT_APP_API_KEY=REACT_APP_API_KEY:latest \
--allow-unauthenticated

PS:我已经赋予了对服务帐户“默认计算服务帐户”的适当访问权限,使其成为秘密REACT_APP_API_KEY的“秘密管理器秘密访问器”。

EN

回答 2

Stack Overflow用户

发布于 2022-10-01 18:29:47

这是个常见的问题。考虑一下每个层的角色和行为:

  • NGINX直接服务于react JS
  • ,react JS直接在用户浏览器上运行。

因此,永远不要读env var (您的秘密)。NGINX不关心它,用户浏览器无法访问。

这里的诀窍是在构建时(在您的dockerfile中)在您的react应用程序的conf文件中设置API键。在运行时之前,秘密必须在JS中。NGINX只为JS服务,不更新/更改JS。

票数 1
EN

Stack Overflow用户

发布于 2022-10-01 17:50:54

我猜你指的是Secret Manager Secret Accessor角色。

为了做到这一点,您可以这样做:

代码语言:javascript
复制
gcloud secrets add-iam-policy-binding secret-id \
--member="serviceAccount:<project-number>-compute@developer.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"

但是,确保您的云运行是,如果没有将上面命令中的member字段更改为,则将其更正为适当的服务帐户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73919156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档