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

通过Heroku流水线将Docker Web应用升级至生产环境时遇报错

报错原因

Heroku流水线的「Promote to production」功能依赖平台生成的slug(代码构建后的打包产物)实现环境间的部署复制,但通过Docker容器注册表推送的应用是直接使用镜像部署,没有生成Heroku标准的slug,因此平台不支持这种部署方式的流水线晋升,这是Heroku的设计限制。

多环境部署替代方案

1. 用CI/CD工具自动化镜像部署

为开发、预发布、生产分别创建独立的Heroku应用,借助GitHub Actions或其他CI/CD工具,按分支触发对应环境的部署:

  • dev分支推送时,构建镜像并部署到开发环境
  • staging分支推送时,构建镜像并部署到预发布环境
  • 预发布验证通过后,手动触发或通过标签将同一镜像部署到生产环境
    核心操作命令示例:
# 登录Heroku容器注册表
heroku container:login
# 构建推送镜像到目标应用
heroku container:push web -a <你的应用名称>
# 发布镜像生效
heroku container:release web -a <你的应用名称>

2. 改用Heroku Buildpack部署(放弃Docker)

如果项目适配,可移除heroku.yml,改用Heroku官方的.NET Buildpack部署,这样会生成标准slug,就能正常使用流水线晋升:

  • 删除项目根目录的heroku.yml
  • 在Heroku应用设置中添加.NET Buildpack
  • 重新关联GitHub仓库到流水线,后续代码推送自动构建slug,预发布验证后即可执行Promote操作

3. 手动复制容器镜像到生产环境

直接操作镜像完成跨环境部署:

# 拉取预发布环境的镜像
docker pull registry.heroku.com/<预发布应用名>/web
# 打生产环境标签
docker tag registry.heroku.com/<预发布应用名>/web registry.heroku.com/<生产应用名>/web
# 推送并发布到生产环境
docker push registry.heroku.com/<生产应用名>/web
heroku container:release web -a <生产应用名>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:30:43