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").toInt()) { // ... }.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 會使用此任務來建立可在 Heroku 平台上執行的可執行檔:
tasks {
create("stage").dependsOn("installDist")
}
請注意,installDist
任務隨附於 Gradle 應用程式外掛程式,該外掛程式已新增到範例專案中。
步驟 3:建立 Procfile
在專案根目錄中建立一個 Procfile 檔案,並新增以下內容:
web: ./build/install/ktor-get-started-sample/bin/ktor-get-started-sample
此檔案指定應用程式可執行檔的路徑,由 stage 任務產生,並允許 Heroku 啟動應用程式。 您可能需要將 ktor-get-started-sample
替換為您的專案名稱。
部署應用程式
若要使用 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 建置並發佈應用程式:
... remote: https://ktor-sample-heroku.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done.