如何创建播放 heroku procfile?

Posted

技术标签:

【中文标题】如何创建播放 heroku procfile?【英文标题】:How to create play heroku procfile? 【发布时间】:2011-11-29 19:15:51 【问题描述】:

我按照这里的指示进行操作

http://blog.heroku.com/archives/2011/8/29/play/

但我先是 play run,然后是 git push heroku master,但没有找到 procfile。

-----> No Procfile found. Will use process: 
       play run --http.port=$PORT $PLAY_OPTS
    如何显式创建 procfile? 指令似乎表明我应该在应用程序运行时推送到heroku master。我读错了吗? 在哪里可以为 mydomain.herokuapp.com 指定 $PORT$PLAY_OPTS? 只修改 application.conf 中 %prod 的值会更好吗?

【问题讨论】:

【参考方案1】:

您需要在项目的根目录中创建一个名为 Procfile 的文件,并且对于 Play,它应该包含

web: play run --http.port=$PORT $PLAY_OPTS

当您部署应用程序时,$PORT 和 $PLAY_OPTS 将在应用程序启动时由 heroku 设置。

【讨论】:

谢谢大家。我只是不理解创建文件的必要性,因为它是凌晨 2 点,我的大脑被融化了。我对 Heroku 守护者的建议是对文档进行轻微更改以明确指出需要创建“在您的播放应用程序的根目录中名为 Procfile 的文件”。 对于 play 2.0,您需要不同的 procfile。见:github.com/playframework/Play20/wiki/ProductionHeroku @notbrain 如何自己设置 Heroku 定义的 PORT 变量 这可能是最近发生了变化,但play run 不适合我。相反:target/start -Dhttp.port=$PORT $PLAY_OPTS 按以下方式工作:***.com/questions/14797106/…【参考方案2】:

    创建 Procfile 就像听起来一样简单。只需创建一个名为 Procfile 的文件并声明您的进程类型和命令。更多信息在这里:http://devcenter.heroku.com/articles/procfile 在这种情况下,您没有提供 Procfile,因此 Heroku 只使用了标准 Play 流程。最好显式提供 Procfile,以防将来更改此默认设置。

    不,你没看错。要上传应用的新版本,请执行 git push 到 heroku。

    $PORT 变量由 Heroku 在内部设置。无需设置。当您第一次将 Play 应用程序推送到 Heroku 时,会在您的应用程序空间中设置 $PLAY_OPTS 变量。您可以使用 heroku 命令行查看它。有关该命令行的更多信息在这里:http://devcenter.heroku.com/articles/heroku-command

查看您的应用配置:

$ heroku config

要更改 $PLAY_OPTS:

$ heroku config:remove PLAY_OPTS
$ heroku config:add PLAY_OPTS=...

默认情况下,heroku 将在 prod 框架 ID 下运行 Play 应用程序。您可以在 Procfile 或 $PLAY_OPTS 变量中更改它。这里唯一重要的是您的应用程序在 heroku 上以 PROD 模式运行(注意该模式与框架 ID 不同)。 Heroku 无法在 DEV 模式下运行 Play 应用。

【讨论】:

Re #2 - 因为我现在已经对 Procfile 进行了直接设置,所以我关于需要在本地运行时推送它的问题现在被认为是荒谬的。我读错了,简单地推送到heroku 并进行更改将触发部署,无论运行如何。出于某种原因,我认为 Procfile 是由 play 启动时创建的。【参考方案3】:

这在很大程度上取决于您使用的播放版本。我检查了文档,发现每个给定版本都有以下Procfiles:

1.x

web: play run --http.port=$PORT $PLAY_OPTS

2.0

web: target/start -Dhttp.port=$PORT $JAVA_OPTS

2.2.0

web: bin/<your-appname> -Dhttp.port=$PORT $JAVA_OPTS -DapplyEvolutions.default=true

2.2.1

web: target/universal/stage/bin/<your-appname> -Dhttp.port=$PORT -DapplyEvolutions.default=true

有关特定版本的更多信息,请查看此 URL:

http://www.playframework.com/documentation/2.2.1/ProductionHeroku

确保将 2.2.1 替换为您正在使用的任何版本。

【讨论】:

以上是关于如何创建播放 heroku procfile?的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 服务器中 Procfile 和 Procfile.Windows 之间的区别

如何添加播放标签 discord bot heroku

Heroku,Java,Procfile,找不到或加载主类

部署到 Heroku 时,如何在 Procfile 中导入带有 Gunicorn 的自定义模块?

Heroku for Django 1.8 的 Procfile

如何通过 Procfile 在 Heroku 上禁用 Rails web dyno?