Heroku
在本教學中,您將學習如何準備 Ktor 應用程式並將其部署到 Heroku。
準備工作
在開始本教學之前,請確保滿足以下準備工作:
- 您擁有一個 Heroku 帳戶。
- 您的電腦上已安裝 Heroku CLI。
建立範例應用程式
按照 建立、開啟與執行新的 Ktor 專案 中的說明建立一個範例應用程式。
Ktor 提供兩種建立與配置伺服器的方法:在程式碼中配置,或使用配置文件。部署時唯一的區別在於如何指定連接埠以監聽傳入的請求。
準備應用程式
第 1 步:配置連接埠
首先,指定一個用於監聽傳入請求的連接埠。由於 Heroku 使用 PORT 環境變數,因此您需要將應用程式配置為使用該變數的值。根據您配置 Ktor 伺服器的方式,執行以下任一操作:
如果伺服器配置是在程式碼中指定的,您可以使用
System.getenv獲取環境變數的值。開啟位於 src/main/kotlin/com/example 資料夾中的 Application.kt 檔案,並變更embeddedServer()函式的port參數值:kotlinfun main() { embeddedServer(Netty, port = System.getenv("PORT")?.toIntOrNull() ?: 8080) { // ... }.start(wait = true) }如果您的伺服器配置是在 application.conf 檔案中指定的,您可以使用
${ENV}語法將環境變數指派給port參數。開啟位於 src/main/resources 中的 application.conf 檔案,並按如下所示進行更新:ktor { deployment { port = 8080 port = ${?PORT} } }
第 2 步:新增 stage 任務
開啟 build.gradle.kts 檔案並新增一個自訂的 stage 任務。Heroku 會使用 stage 任務來建立一個可在 Heroku 平台上執行的可執行檔:
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 替換為您的專案名稱。
第 4 步:指定 Java 版本(選用)
預設情況下,Heroku 使用 Java 25 執行您的應用程式。如果您的 Ktor 應用程式使用不同的 Java 版本編譯,您需要明確指定它以避免部署失敗。
若要指定 Java 版本,請在專案的根資料夾中建立一個 system.properties 檔案,並加入以下內容:
java.runtime.version=21將 21 替換為您需要的 Java 版本。
欲了解更多資訊,請參閱 Heroku 關於指定 Java 版本的文件。
部署應用程式
若要使用 Git 將您的應用程式部署到 Heroku,請開啟一個新的終端機視窗並按照以下步驟操作:
在本機提交前一章節中所做的變更:
Bashgit add . git commit -m "Prepare app for deploying"登入 Heroku CLI:
Bashheroku login使用
heroku create指令建立 Heroku 應用程式。 將ktor-sample-heroku替換為您的應用程式名稱:Bashheroku create ktor-sample-heroku此指令會執行兩件事:
- 建立一個新的 Heroku 應用程式,可在 Web 儀表板上查看。
- 將名為
heroku的新 Git 遠端新增到本機存儲庫。
若要部署應用程式,請將變更推送到
heroku main:Bashgit push heroku main等待 Heroku 組建並發布應用程式。完成後,您應該會看到以下輸出:
bash... remote: https://ktor-sample-heroku.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done.
