如何创建播放 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】:这在很大程度上取决于您使用的播放版本。我检查了文档,发现每个给定版本都有以下Procfile
s:
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 之间的区别
部署到 Heroku 时,如何在 Procfile 中导入带有 Gunicorn 的自定义模块?