如何将 Scala HTTP4S 应用程序部署到 Heroku?

How to deploying Scala HTTP4S app to Heroku?

我正在尝试将 Scala HTTP4S 应用程序部署到 Heroku。

sbt -sbt-version 1.3.12 new http4s/http4s.g8 -b 0.21

使用上面的命令从HTTP4S获取giter8模板。

herokuAppName in Compile := "glacial-waters-76053"

enablePlugins(JavaAppPackaging)

将 about 行放入我的 build.sbt 文件中。

addSbtPlugin("com.heroku" % "sbt-heroku" % "2.1.4")
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.7.5")

将以上内容添加到我的 plugins.sbt 文件中

然后我创建了一个包含以下内容的 Procfile

web: target/universal/stage/bin/fsdeploy -Dhttp.port=${PORT}

我的 application.conf 文件中没有任何内容,我不确定如何为上述 Procfile 指定端口。

我研究了:https://devcenter.heroku.com/articles/deploying-scala 以及一些 Youtube 视频。但是,所有 Youtube 教程各不相同,none 其中使用 HTTP4S。

我目前在输入 heroku logs -a glacial-waters-76053 时遇到错误

2020-09-24T13:08:35.000000+00:00 app[api]: Build succeeded
2020-09-24T13:09:09.589928+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2020-09-24T13:09:09.618010+00:00 heroku[web.1]: Stopping process with SIGKILL
2020-09-24T13:09:09.723909+00:00 heroku[web.1]: Process exited with status 137
2020-09-24T13:09:09.764290+00:00 heroku[web.1]: State changed from starting to crashed
2020-09-24T13:09:09.766587+00:00 heroku[web.1]: State changed from crashed to starting
2020-09-24T13:09:13.794185+00:00 heroku[web.1]: Starting process with command `target/universal/stage/bin/fsdeploy -Dhttp.port=${8080}`
2020-09-24T13:09:16.042457+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.
2020-09-24T13:09:16.150395+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8
2020-09-24T13:09:18.212577+00:00 app[web.1]: [ioapp-compute-0] INFO  o.h.b.c.n.NIO1SocketServerGroup - Service bound to address /0:0:0:0:0:0:0:0:8080
2020-09-24T13:09:18.221367+00:00 app[web.1]: [ioapp-compute-0] INFO  o.h.s.b.BlazeServerBuilder -
2020-09-24T13:09:18.221370+00:00 app[web.1]: _   _   _        _ _
2020-09-24T13:09:18.221370+00:00 app[web.1]: | |_| |_| |_ _ __| | | ___
2020-09-24T13:09:18.221370+00:00 app[web.1]: | ' \  _|  _| '_ \_  _(_-<
2020-09-24T13:09:18.221371+00:00 app[web.1]: |_||_\__|\__| .__/ |_|/__/
2020-09-24T13:09:18.221371+00:00 app[web.1]: |_|
2020-09-24T13:09:18.341159+00:00 app[web.1]: [ioapp-compute-0] INFO  o.h.s.b.BlazeServerBuilder - http4s v0.21.5 on blaze v0.14.12 started at http://[::]:8080/
2020-09-24T13:10:14.543831+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2020-09-24T13:10:14.565588+00:00 heroku[web.1]: Stopping process with SIGKILL
2020-09-24T13:10:14.691564+00:00 heroku[web.1]: Process exited with status 137
2020-09-24T13:10:14.729362+00:00 heroku[web.1]: State changed from starting to crashed
2020-09-24T13:10:16.891638+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/joke" host=glacial-waters-76053.herokuapp.com request_id=1dfa6a6e-2e75-40a1-89cd-97b092a0fbe1 fwd="109.152.82.26" dyno= connect= service= status=503 bytes= protocol=https
2020-09-24T13:10:17.492951+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=glacial-waters-76053.herokuapp.com request_id=9a8f9622-e93b-4517-b5c3-fe80f426a6d7 fwd="109.152.82.26" dyno= connect= service= status=503 bytes= protocol=https

Postman return 503 服务不可用错误。

这是回购的 link:https://github.com/fullStackRyan/fsdeploy

您的应用将尝试侦听端口 8080。

你可以把你的YourServerNameServer.scala第33行的端口从8080换成sys.env("PORT").toInt