Terraform / Heroku 在 heroku/ruby buildpack 中找不到 'web' 进程

Terraform / Heroku not finding 'web' process in heroku/ruby buildpack

我在 Terraform 中遇到错误:

Error: Patch "https://api.heroku.com/apps/coderdojo-contentful-staging/formation/web": Couldn't find that process type (web).

│ with heroku_formation.coderdojo_contentful_staging_formation[0],
│ on terraform.tf line 41, in resource "heroku_formation" "coderdojo_contentful_staging_formation":
│ 41: resource "heroku_formation" "coderdojo_contentful_staging_formation" {

来自我的 terraform.tf 文件的这些行:

resource "heroku_formation" "coderdojo_contentful_staging_formation" {
  count    = length(var.formations)
  app      = heroku_app.coderdojo_contentful_staging.name
  type     = lookup(var.formations[count.index], "type")
  quantity = lookup(var.formations[count.index], "quantity")
  size     = lookup(var.formations[count.index], "size")
}

依赖于我的 terraform.tfvars 文件中的这些行:

formations = [
  {
    type     = "web"
    size     = "standard-1x"
    quantity = "1"
  }
]

buildpacks = [
  "heroku/ruby"
]

在线搜索文档(例如 buildpacks and heroku-buildpack-ruby),Web 进程类型似乎来自 buildpack,或 Procfile

另一个项目使用非常相似的设置(即没有 Procfile)工作正常,但添加了 heroku/nodejs buildpack。我尝试添加该构建包但遇到了同样的错误。

我错过了什么?

Another project works fine with a very similar setup (i.e. no Procfile), but with the addition of a heroku/nodejs buildpack. I tried adding that build pack but got the same error.

如果 Procfile 不存在,heroku/nodejs buildpack 回退到 package.json 中定义的启动脚本。我怀疑您使用该构建包的其他项目有一个启动脚本。 Ruby buildpack has no such default.

如果您的应用不需要 Node.js,请不要添加 Node.js buildpack。相反,将 Procfile 添加到存储库的根目录,告诉 Heroku 如何 运行 您的应用程序,例如

web: bundle exec ruby path/to/some/script.rb

这定义了一个 web 过程 运行 s bundle exec ruby ruby path/to/some/script.rb