You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将GitHub Actions工作流环境变量传递至Docker容器?

解决GitHub Actions环境变量传递到React Docker容器的问题

问题说明

你在GitHub Actions工作流顶层设置了环境变量GITHUB_RUN_NUMBER,希望在React前端的Docker容器中通过console.log打印该值,但目前变量无法传递到容器中。

核心原因

  1. React项目(基于Create React App)要求可访问的环境变量必须以REACT_APP_为前缀,否则构建时不会注入到应用中。
  2. 工作流中顶层环境变量的写法错误:${github.run_number}未使用GitHub Actions的表达式语法,无法正确解析。
  3. 未通过Docker构建参数(--build-arg)将工作流中的环境变量传递到镜像构建过程。

解决方案

1. 修正工作流顶层环境变量

将顶层的env部分修改为,添加REACT_APP_前缀并使用正确的表达式语法:

env: 
  REACT_APP_GITHUB_RUN_NUMBER: ${{ github.run_number }}

2. 在Docker构建命令中传递构建参数

在Build_Demo任务的Build and Push Docker Image步骤中,更新docker build命令,添加--build-arg传递变量:

- name: Build and Push Docker Image
  env:
    CI_COMMIT_TAG: N-${{ github.run_number }}
  run: |
    sudo docker build -t $CI_REGISTRY/$CI_REGISTRY_REPOSITORY:$CI_COMMIT_TAG . \
      -f ./deploy/Dockerfile \
      --build-arg WEB_PRIVATE_KEY="$WEB_PRIVATE_KEY" \
      --build-arg REACT_APP_GA_TRACKING_ID=$REACT_APP_GA_TRACKING_ID \
      --build-arg REACT_APP_GITHUB_RUN_NUMBER=$REACT_APP_GITHUB_RUN_NUMBER
    docker push $CI_REGISTRY/$CI_REGISTRY_REPOSITORY:$CI_COMMIT_TAG

3. 修改Dockerfile接收构建参数

在你的./deploy/Dockerfile中添加以下内容,接收构建参数并设置为容器环境变量(确保React构建过程能读取到该变量):

# 接收构建参数
ARG REACT_APP_GITHUB_RUN_NUMBER
# 将参数设置为容器环境变量,确保运行时和构建时都能访问
ENV REACT_APP_GITHUB_RUN_NUMBER=$REACT_APP_GITHUB_RUN_NUMBER

# (如果你的Dockerfile中有构建命令,比如npm run build,此时变量会被React自动注入)
RUN npm run build

4. 调整React代码中的变量名

将React代码中的打印语句修改为使用带前缀的变量名:

console.log(`Build number= ${process.env.REACT_APP_GITHUB_RUN_NUMBER}`)

补充说明

  • 如果你的Dockerfile是多阶段构建,确保构建参数在执行npm run build的阶段被定义和使用。
  • 工作流中的CI_REGISTRY和CI_REGISTRY_REPOSITORY变量需要提前定义(比如在步骤中设置或从ECR登录步骤的输出中获取),否则docker build命令会报错。

内容的提问来源于stack exchange,提问作者Eran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:30:57