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

使用heroku container:push web推送镜像未更新,如何清除缓存?

解决Heroku Docker镜像部署后未生效的问题

嘿,我之前也踩过这个一模一样的坑!你遇到的情况确实常见,Heroku在容器部署流程里偶尔会出现新镜像没被正确加载的状况——不一定是“缓存镜像”本身,但确实有缓存相关的环节会拖后腿,下面是我亲测有效的解决步骤:

第一步:先确认新镜像真的推上去了

先别急着找缓存问题,先用命令检查Heroku上的镜像状态:

heroku container:list

看看web类型的镜像TAG是不是你刚推送的最新版本(比如有没有新的时间戳,或者你自定义的版本号)。如果TAG还是旧的,大概率是本地Docker缓存搞的鬼——你以为构建了新镜像,其实还是用的旧代码打包的。这时候重新推送时加上--no-cache参数绕过本地缓存:

heroku container:push web --no-cache

第二步:手动触发Release(最常见的修复点)

很多时候push成功后,Heroku不会自动触发应用的Release流程(也就是不会主动用新镜像替换旧实例),这时候手动执行:

heroku container:release web

这个命令相当于直接告诉Heroku:“别揪着旧镜像不放了,赶紧用刚推的新镜像重启应用!”

第三步:清除Heroku的构建缓存(前两步没用再试)

如果上面操作后还是没效果,可能是Heroku的远程构建缓存在搞怪,执行下面的命令清除应用的所有构建缓存:

heroku builds:cache:purge

清除完之后,重新执行heroku container:push web --no-cache和heroku container:release web,确保新镜像完全从头构建并部署。

第四步:兜底操作——强制重启应用

要是所有步骤都试了还是旧状态,直接强制重启整个应用,让所有旧实例下线,拉取新镜像启动:

heroku restart

额外排查小细节

  • 确认你推送的是正确的进程类型:比如是不是误推成了worker而不是web?检查你的Dockerfile和Heroku配置里的进程类型是否匹配。
  • 如果用了自定义镜像标签:确保每次推送都更新标签,或者直接用默认的latest标签(Heroku默认会拉取latest标签的镜像)。

一般来说,前两步就能解决90%的问题,我之前就是因为忘了手动Release折腾了好半天😂

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:38:29