Heroku
在本教程中,我们将向你展示如何准备 Ktor 应用程序并将其部署到 Heroku。
必备条件
在开始本教程之前,请确保满足以下必备条件:
- 你有一个 Heroku 账户。
- Heroku CLI 已安装在你的机器上。
创建一个示例应用程序
按照创建、打开并运行新的 Ktor 项目中所述创建一个示例应用程序。
请注意,Ktor 提供了两种创建和配置服务器的方式:在代码中或使用配置文件。部署时唯一的区别在于如何指定用于监听传入请求的端口。
准备应用程序
步骤 1:配置端口
首先,你需要指定用于监听传入请求的端口。由于 Heroku 使用 PORT
环境变量,你需要将应用程序配置为使用此变量的值。根据配置 Ktor 服务器的方式,执行以下操作之一:
- 如果服务器配置在代码中指定,你可以使用
System.getenv
获取环境变量的值。打开src/main/kotlin/com/example
文件夹中的Application.kt
文件,并更改embeddedServer
函数的port
形参值,如下所示:
kotlin
fun main() {
embeddedServer(Netty, port = System.getenv("PORT").toInt()) {
// ...
}.start(wait = true)
}
```
* 如果你的服务器配置在 `application.conf` 文件中指定,你可以使用 `${ENV}` 语法将环境变量赋值给 `port` 形参。打开 `src/main/resources` 中的 `application.conf` 文件并进行如下更新:
ktor { deployment { port = 8080 port = ${?PORT} } }
### 步骤 2:添加一个 stage 任务 {id="stage"}
打开 `build.gradle.kts` 文件并添加一个自定义 `stage` 任务,Heroku 使用该任务来生成一个可执行文件,以便在 Heroku 平台上运行:
```kotlin
tasks {
create("stage").dependsOn("installDist")
}
请注意,installDist
任务来自 Gradle application 插件,该插件已添加到示例项目中。
步骤 3:创建一个 Procfile
在项目根目录中创建一个 Procfile 并添加以下内容:
web: ./build/install/ktor-get-started-sample/bin/ktor-get-started-sample
此文件指定了由 stage
任务生成的应用程序可执行文件的路径,并允许 Heroku 启动应用程序。 你可能需要将 ktor-get-started-sample
替换为你的项目名称。
部署应用程序
要使用 Git 将应用程序部署到 Heroku,请打开终端并按照以下步骤操作:
- 在本地提交上一节中所做的更改:
Bash
git add .
git commit -m "Prepare app for deploying"
- 登录到 Heroku CLI:
Bash
heroku login
- 使用
heroku create
命令创建一个 Heroku 应用程序。 你需要将ktor-sample-heroku
替换为你的应用程序名称:
Bash
heroku create ktor-sample-heroku
此命令执行两项操作:
- 创建一个新的 Heroku 应用程序,可在 web 控制台上查看。
- 将名为
heroku
的新 Git 远程添加到本地版本库。
- 要部署应用程序,将更改推送到
heroku main
...
Bash
git push heroku main
... 并等待 Heroku 构建并发布应用程序:
...
remote: https://ktor-sample-heroku.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.