我刚刚使用Play 2.3.8将旧的Play 2.1应用更新为新的Typesafe Activator。我注意到应用程序现在似乎在项目的根目录中有一个激活器启动器。我正在尝试在Heroku上部署应用程序并收到此错误:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
我的Procfile如下:
web: ./activator "-Dhttp.port=${PORT} ${JAVA_OPTS} -Dconfig.file=${CONFIG_RESOURCE}" run
该应用程序非常小,我几乎肯定应该有任何理由启动并绑定到端口需要超过60秒。在本地,它会立即与完全相同的命令绑定。
任何可能导致问题的想法?
答案 0 :(得分:3)
我建议不使用activator
在生产环境中运行您的应用。
Heroku针对您的应用程序运行sbt stage
命令,该命令会创建一个target/universal/stage/bin/<app-name>
脚本,可用于启动您的应用。这是在生产中运行的更好方法,因为它消除了激活器和/或sbt的任何开销或潜在怪癖。
你的Procfile
应该是这样的:
web: target/universal/stage/bin/<app-name> -Dhttp.port=${PORT} -Dconfig.file=${CONFIG_RESOURCE}
当然,请将<app-name>
替换为build.sbt
中应用的名称。 JAVA_OPTS
将自动被选中。