Heroku部署Django应用未拉取最新Git提交的问题排查
Django部署Heroku Staging流水线构建失败问题
问题背景
部署Django应用到Heroku staging流水线时出现两个核心问题:
- 代码不更新问题:原因为
settings.py中依赖python-decouple的SECRET_KEY配置报错,于是做了以下修改:- 注释掉
settings.py中decouple的导入语句 - 从
requirements.txt移除python-decouple包 - 改用
dotenv加载环境变量,代码如下:from dotenv import load_dotenv load_dotenv() ... SECRET_KEY = str(os.getenv('SECRET_KEY'))
from decouple import config ... SECRET_KEY = config('SECRET_KEY') - 注释掉
- 静态文件收集失败:构建执行
python manage.py collectstatic --noinput时,报错找不到vendor/bootswatch/default/bootstrap.min.css.map文件
可能的原因分析
一、Heroku不识别最新代码的原因
- 本地提交未正确推送到远程staging分支:
- 执行
git branch -vv确认本地分支跟踪的远程分支是否为staging环境分支 - 执行
git log --oneline对比本地和远程提交记录,确保最新提交已推送;若未推送,执行git push staging <本地分支名>(确认无冲突后可加--force强制推送)
- 执行
- Heroku构建缓存残留:
- 旧构建缓存可能保留了之前的代码和依赖,执行
heroku builds:cache:purge -a <你的应用名称>清除缓存后重新触发构建
- 旧构建缓存可能保留了之前的代码和依赖,执行
- 提交遗漏关键文件:
- 执行
git status检查settings.py和requirements.txt是否有未提交的修改 - 执行
git show <最新提交哈希>查看该提交是否包含这两个文件的变更记录
- 执行
- 远程仓库地址错误:
- 执行
git remote -v确认heroku远程仓库地址是否对应staging环境,避免推送到了production等其他环境
- 执行
二、collectstatic文件缺失的原因
- 静态文件未提交到Git:
- 检查本地是否存在
vendor/bootswatch/default/bootstrap.min.css.map文件,若存在,查看.gitignore是否误将该文件或父目录排除,导致未被提交
- 检查本地是否存在
- 前端依赖安装不完整:
- 若使用pip安装Bootswatch相关包,确认
requirements.txt中包版本正确,且Heroku构建时已完成安装;若使用npm/yarn管理前端依赖,确认package.json中依赖正确,且构建脚本包含依赖安装步骤
- 若使用pip安装Bootswatch相关包,确认
- 静态文件配置错误:
- 检查
settings.py中STATIC_ROOT、STATICFILES_DIRS、STATIC_URL的配置是否正确,确保collectstatic能正确找到静态文件来源路径
- 检查
内容的提问来源于stack exchange,提问作者enoren5
相关产品推荐
相关产品推荐

