Sevalla
在本教學中,您將學習如何準備並將 Ktor 應用程式部署到 Sevalla。根據建立 Ktor 伺服器的方式,您可以使用以下初始專案之一:
先決條件
在開始本教學之前,您需要建立 Sevalla 帳戶(附贈 50 美元的免費點數)。
複製範例應用程式
若要開啟範例應用程式,請遵循以下步驟:
- 複製 Ktor 文件存儲庫。
- 開啟 codeSnippets 專案。
- 開啟 embedded-server 或 engine-main 範例,這些範例展示了兩種不同的 Ktor 伺服器設定方式 — 無論是直接在程式碼中配置,或是透過外部配置文件進行配置。部署這些專案的唯一區別在於如何指定用於監聽傳入請求的連接埠。
準備應用程式
步驟 1:配置連接埠
Sevalla 會使用 PORT 環境變數注入一個隨機連接埠。您的應用程式必須配置為監聽該連接埠。
如果您選擇了在程式碼中指定伺服器配置的 embedded-server 範例,您可以使用 System.getenv() 取得環境變數的值。開啟位於 src/main/kotlin/com/example 資料夾中的 Application.kt 檔案,並如下所示修改 embeddedServer() 函式的 port 參數值:
fun main() {
val port = System.getenv("PORT")?.toIntOrNull() ?: 8080
embeddedServer(Netty, port = port, host = "0.0.0.0") {
// ...
}.start(wait = true)
}如果您選擇了在 application.conf 檔案中指定伺服器配置的 engine-main 範例,您可以使用 ${ENV} 語法將環境變數指派給 port 參數。開啟位於 src/main/resources 的 application.conf 檔案,並如下所示進行更新:
ktor {
deployment {
port = 5000
port = ${?PORT}
}
application {
modules = [ com.example.ApplicationKt.module ]
}
}步驟 2:新增 Dockerfile
若要在 Sevalla 上組建並執行您的 Ktor 專案,您需要一個 Dockerfile。以下是使用多階段組建的 Dockerfile 範例:
# Stage 1: Build the app
FROM gradle:8.5-jdk17-alpine AS builder
WORKDIR /app
COPY . .
RUN gradle installDist
# Stage 2: Run the app
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY --from=builder /app/build/install/<project-name>/ ./
ENV PORT=8080
CMD ["./bin/<project-name>"]請確保將 <project-name> 取代為您 settings.gradle.kts 檔案中定義的專案名稱:
rootProject.name = "ktor-app"部署應用程式
Sevalla 會直接從連接的 Git 存儲庫組建並部署您的應用程式。這可以代管在 GitHub、GitLab、Bitbucket 或任何支援的 Git 供應商平台上。若要成功部署,請確保您的專案已提交並推送,且包含所有必要的檔案(例如您的 Dockerfile、build.gradle.kts 和原始碼)。
若要部署應用程式,請登入 Sevalla 並遵循以下步驟:
- 點擊 Applications -> Create an app

- 選擇您的 Git 存儲庫並選取相應的分支(通常為
main或master)。 - 設定 application name(應用程式名稱)、選取 region(區域),並選擇您的 pod size(pod 大小,您可以從 0.5 CPU / 1 GB RAM 開始)。
- 點擊 Create,但先跳過部署步驟

- 前往 Settings -> Build,然後點擊 Build environment 卡片下的 Update Settings。

- 將組建方法設定為 Dockerfile。

- 確認 Dockerfile path 為
Dockerfile且 Context 為.。 - 返回您應用程式的 Deployment 索引標籤並點擊 Deploy。
Sevalla 將會複製您的 Git 存儲庫,使用您的 Dockerfile 組建 Docker 映像,注入 PORT 環境變數,並執行您的應用程式。如果一切配置正確,您的 Ktor 應用程式將在 https://<your-app>.sevalla.app 上線。
