最后,我在此与Heroku一起打开了一个服务台票。得到了他们的回应,所以我将其张贴在这里。感谢Heroku的支持!
简短的答案是,不,当前您需要
heroku scale web=0 service=1在没有公共
web流程的情况下运行服务。详细说明:
早期,Node.js Buildpack检查a的存在
Procfile,如果缺少,则使用创建一个默认的
web: npmstart。这使得无需Web流程即可轻松创建应用程序,因为您可以提供一个
Procfile定义了某些流程的,而无需
web列出。
但是,随着越来越多的用户需要阵列的buildpack而不是单个的buildpack,该解决方案产生了问题。Node是最受欢迎的第一个buildpack,因为Java,Python,PHP和Ruby应用程序经常使用它来构建前端资产。每当一个没有
Procfile运行Node
的应用程序,然后是另一个buildpack 的应用程序时,Node都会注入自己的默认值
Procfile(
web: npmstart),然后第二个buildpack便不会创建其默认值,
Procfile因为文件系统中已经存在该默认值。因此,当应用程序中缺少默认Procfile时,注入默认Procfile会对多语言应用程序下游产生问题。
因此,我们停止了创建默认的Procfile,而是在bin /
release中使用了default_process_types。这解决了后续的buildpack继承不正确的默认Procfiles的问题,但由于
default_process_types是
扩展 而不是 被
Procfile进程列表 取代
,因此未在其中
web定义进程的应用
Procfile将
web合并默认进程。这就是为什么
web即使在中没有
web输入也出现的原因
Procfile。
我们也不想给任何客户带来意想不到的账单。一些应用程序具有多种流程类型,其中某些仅偶尔运行,某些仅限于单个实例,某些需要按比例缩放等,因此将所有内容默认设置为1而不是0可能还会导致额外的账单由于应用出现故障。这就是为什么非Web进程默认缩放为零的原因。



