Heroku部署时始终调用nodejs构建,不识别heroku.yml文件如何解决?
问题根因
- 部署日志显示当前使用Heroku-20栈,属于buildpack模式的传统栈,未正确切换到容器栈,因此不会识别heroku.yml执行Docker构建
- 应用已绑定3个buildpack,只要存在绑定的buildpack,Heroku会优先走buildpack构建逻辑,忽略容器构建配置
- heroku.yml存在语法错误:
run配置块与build平级,当前配置中run缩进在build块内部,会导致配置解析失败 - 一键部署场景下,app.json必须保留
"stack": "container"配置,该字段是Heroku一键部署识别容器栈的必要参数,之前移除该配置的操作不符合要求
修复步骤
- 清除当前应用所有绑定的buildpack
执行命令:heroku buildpacks:clear --app <你的应用名称> - 修正heroku.yml格式,正确配置如下:
build: docker: web: Dockerfile.heroku run: web: npm start
- 恢复app.json中的
"stack": "container"配置项 - 重新设置应用栈为容器栈,注意正确命令格式:
heroku stack:set container --app <你的应用名称> - 将上述所有修改提交到Git仓库后重新推送部署,即可触发heroku.yml定义的Docker构建流程
一键部署适配说明
完成上述修改后,仓库内的一键部署链接会自动识别app.json中的容器栈配置,调用heroku.yml完成Docker镜像构建,无需用户额外操作。
内容的提问来源于stack exchange,提问作者Isaac Abadi
相关产品推荐
相关产品推荐

