【问题标题】:why I am getting this error while deploying an app?为什么我在部署应用程序时收到此错误?
【发布时间】:2020-12-05 17:00:20
【问题描述】:

我目前正在使用ktor(一个用于创建 apis 的 kotlin 库)制作 IoT 项目。我能够顺利地将它部署在我的机器上,但是在我将它部署到 heroku 之后它开始得到错误

我的尝试

我已使用 shadowJar 将我的项目打包为胖 jar 文件 然后我添加了web: java -Dserver.port=$PORT -jar build/libs/Server.jarprocfile

它开始显示

2020-12-05T16:25:00.375911+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET
path="/test" host=bot-project-server.herokuapp.com request_id=a757b03c-3511-4075-86d2-c29fc7f58672
fwd="196.188.177.54" dyno= connect= service= status=503 bytes= protocol=https

然后我输入heroku ps:scale web=1 -a $My_App 什么都没有改变

1.30 分钟后出现另一个错误

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch

我的最后一次尝试

我已经从 Procfile 中的web 更改为 => worker 这并没有太大的影响,只是在上面删除了Error R10 ^

我的代码

fun main(){
    /**main*/
    val mPort = System.getProperty("PORT")?.toInt() ?: 23567
    embeddedServer(Netty, port = mPort){
            doPost()
        }.start(true)
}
fun Application.doPost() {
    routing {
        get("/test"){
            this.call.respondText("Done!")
        }
    }
}

注意:我部署的同一个 jar 文件在我的机器上运行顺利。

【问题讨论】:

    标签: kotlin heroku ktor


    【解决方案1】:

    来自Heroku documentation

    Heroku 将绑定的端口分配为 PORT 环境变量。

    问题是你使用了错误的方法来获取环境变量PORT的值。您应该使用System.getenv 而不是System.getProperty

    总的来说,我完成了以下步骤来成功部署应用程序:

    1. 使用ShadowJar 插件创建了一个胖罐子。
    2. 使用deploying Executable JAR files 文档文章中描述的步骤将 jar 部署到 Heroku 应用程序中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-10
      • 2022-08-14
      • 1970-01-01
      • 2013-05-18
      • 2017-05-08
      • 2015-11-30
      • 2020-03-01
      • 1970-01-01
      相关资源
      最近更新 更多