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

Docker化Python/Flask应用触发GitHub Action失败求助

问题分析与解决方案

核心问题

Flask应用在本地及云端虚拟机运行时可正常触发GitHub Action,Docker化后调用GitHub API返回401 Bad credentials,但进入容器执行curl命令却能成功。

可能原因及排查步骤

  • 环境变量未正确传入容器
    代码通过os.getenv('ACTION_TOKEN')获取令牌,需确认Docker容器内该环境变量是否有效:

    1. 进入容器执行echo $ACTION_TOKEN,检查输出是否为正确的GitHub令牌。
    2. 确认Docker运行命令(或docker-compose配置)是否通过-e ACTION_TOKEN=ghp_xxx正确传递变量,无拼写错误。
  • 请求头格式异常
    从返回日志可见,Accept头存在多余空格:application / vnd.github.everest - preview + json,正常格式应为application/vnd.github.everest-preview+json。GitHub API可能因无效的Accept头拒绝请求,即使令牌正确。
    排查代码中GITHUB_ACTION_REQUEST_HEADER的构造逻辑,确保所有HTTP头格式规范,无多余空格或换行;同时验证Authorization字段是否正确拼接为token ${ACTION_TOKEN}(注意token后需有空格)。

  • Docker缓存导致旧代码残留
    若修改过环境变量或请求头逻辑但未重新构建镜像,容器可能仍运行旧版本代码。执行docker build --no-cache重新构建镜像,避免缓存干扰。

  • curl与代码请求的参数差异
    对比curl命令和代码的请求细节:

    1. 确保curl使用的令牌与代码获取的ACTION_TOKEN完全一致。
    2. 通过curl -v查看请求头,与代码中GITHUB_ACTION_REQUEST_HEADER的内容做对比,确认Accept、Content-Type等字段无差异。

验证建议

在代码中添加日志,打印脱敏后的完整GITHUB_ACTION_REQUEST_HEADER和GITHUB_ACTION_TOKEN,结合容器内环境变量检查,精准定位问题点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:44:16