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

GitHub Actions环境变量无法传递至Docker容器的问题

容器无法获取GitHub Runner Secret环境变量的解决方法

核心原因

GitHub Runner的环境变量不会自动传递给Docker构建/运行的容器,必须通过显式配置让变量从Runner环境流入Docker进程,最终传递到容器内部。

具体解决方案

1. 确保Runner环境变量传递到Docker Compose进程

你的GitHub Actions Job已经定义了env,但需要确保执行docker compose时这些变量能被读取到。可以在执行命令前显式导出变量:

修改.github/workflows/main.yml中的部署步骤:

- name: rebuild containers
  run: |
    export PROTOCOL=${{ secrets.PROTOCOL }}
    export HOST=${{ secrets.HOST }}
    export PORT=${{ secrets.PORT }}
    docker compose build
- name: up containers
  run: |
    export PROTOCOL=${{ secrets.PROTOCOL }}
    export HOST=${{ secrets.HOST }}
    export PORT=${{ secrets.PORT }}
    ./scripts/run.sh -m prod

2. 针对构建阶段的变量传递(如果Dockerfile需要)

如果你的Backend服务在构建镜像时就需要使用这些变量(比如Dockerfile中引用),需要在docker-compose.yml中配置构建参数:

更新docker-compose.yml的backend服务配置:

backend:
  container_name: backend
  build:
    context: ./backend
    args:
      - PROTOCOL=${PROTOCOL}
      - HOST=${HOST}
      - PORT=${PORT}
  restart: unless-stopped
  environment:
    - PROTOCOL=${PROTOCOL}
    - HOST=${HOST}
    - PORT=${PORT}
  ...

同时在Backend的Dockerfile中定义ARG并可选转为环境变量:

# 定义构建参数
ARG PROTOCOL
ARG HOST
ARG PORT

# 如果需要在容器运行时保留这些变量,转为ENV
ENV PROTOCOL=${PROTOCOL}
ENV HOST=${HOST}
ENV PORT=${PORT}

3. 使用.env文件统一传递变量

在GitHub Actions步骤中生成.env文件,Docker Compose会自动读取该文件填充环境变量:

在.github/workflows/main.yml中添加生成.env的步骤:

- name: generate .env file
  run: |
    echo "PROTOCOL=${{ secrets.PROTOCOL }}" > .env
    echo "HOST=${{ secrets.HOST }}" >> .env
    echo "PORT=${{ secrets.PORT }}" >> .env
- name: rebuild containers
  run: docker compose build
- name: up containers
  run: ./scripts/run.sh -m prod

4. 检查run.sh脚本中的Docker命令

如果你的run.sh直接使用docker run而非docker compose up,需要在命令中显式传递环境变量:

修改run.sh中的相关命令:

docker run -d \
  --name backend \
  -e PROTOCOL=$PROTOCOL \
  -e HOST=$HOST \
  -e PORT=$PORT \
  backend:latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:58:22