Skip to content

Sevalla

在本教程中,你将学习如何准备 Ktor 应用程序并将其部署到 Sevalla。你可以根据创建 Ktor 服务器的方式,使用以下初始项目之一:

前提条件

在开始本教程之前,你需要创建一个 Sevalla 帐户(附赠 50 美元的免费额度)。

克隆示例应用程序

按照以下步骤打开示例应用程序:

  1. 克隆 Ktor 文档仓库
  2. 打开 codeSnippets 项目。
  3. 打开 embedded-serverengine-main 示例,这两个示例演示了设置 Ktor 服务器的两种不同方法——直接在代码中配置或通过外部配置文件配置。部署这些项目的唯一区别在于如何指定用于侦听传入请求的端口。

准备应用程序

第 1 步:配置端口

Sevalla 使用 PORT 环境变量注入一个随机端口。你的应用程序必须配置为侦听该端口。

如果你选择了在代码中指定服务器配置的 embedded-server 示例,则可以使用 System.getenv() 获取环境变量的值。打开位于 src/main/kotlin/com/example 文件夹中的 Application.kt 文件,并按如下所示更改 embeddedServer() 函数的端口参数值:

kotlin
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} 语法将环境变量分配给端口参数。打开位于 src/main/resources 中的 application.conf 文件,并按如下所示进行更新:

hocon
ktor {
  deployment {
    port = 5000
    port = ${?PORT}
  }
  application {
    modules = [ com.example.ApplicationKt.module ]
  }
}

第 2 步:添加 Dockerfile

要在 Sevalla 上构建并运行你的 Ktor 项目,你需要一个 Dockerfile。以下是一个使用多阶段构建的示例 Dockerfile:

docker
# 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 文件中定义的项目名称:

kotlin
rootProject.name = "ktor-app"

部署应用程序

Sevalla 直接通过连接的 Git 仓库构建并部署你的应用程序。仓库可以托管在 GitHub、GitLab、Bitbucket 或任何受支持的 Git 提供商平台上。为了成功部署,请确保你的项目已提交并推送,并且包含所有必要的文件(例如 Dockerfile、build.gradle.kts 和源代码)。

要部署应用程序,请登录 Sevalla 并按照以下步骤操作:

  1. 点击 Applications -> Create an appSevalla add app
  2. 选择你的 Git 仓库并选择相应的分支(通常为 mainmaster)。
  3. 设置 应用程序名称,选择 区域,然后选择 pod 大小(你可以从 0.5 CPU / 1 GB 内存开始)。
  4. 点击 Create,但暂时跳过部署步骤
    Sevalla create app
  5. 转到 Settings -> Build,然后点击 Build environment 卡片下的 Update Settings
    Sevalla update build settings
  6. 将构建方法设置为 DockerfileSevalla Dockerfile settings
  7. 确认 Dockerfile 路径Dockerfile,且 Context.
  8. 返回应用程序的 Deployment 选项卡,然后点击 Deploy

Sevalla 将克隆你的 Git 仓库,使用 Dockerfile 构建 Docker 镜像,注入 PORT 环境变量,并运行你的应用程序。如果一切配置正确,你的 Ktor 应用将在 https://<your-app>.sevalla.app 上线。