Skip to content

Sevalla

このチュートリアルでは、KtorアプリケーションをSevallaに準備してデプロイする方法を学びます。Ktorサーバーの作成方法に応じて、以下のいずれかの初期プロジェクトを使用できます。

前提条件

このチュートリアルを開始する前に、Sevallaアカウントを作成する必要があります(50ドルの無料クレジットが付属しています)。

サンプルアプリケーションをクローンする

サンプルアプリケーションを開くには、以下の手順に従ってください。

  1. Ktorドキュメントリポジトリをクローンします。
  2. codeSnippetsプロジェクトを開きます。
  3. embedded-serverまたはengine-mainサンプルを開きます。これらは、Ktorサーバーを設定するための2つの異なるアプローチ(コード内で直接設定するか、外部設定ファイルを使用するか)を示すものです。これらのプロジェクトをデプロイする上での唯一の違いは、受信リクエストをリッスンするために使用するポートの指定方法です。

アプリケーションを準備する

ステップ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](https://github.com/ktorio/ktor-documentation/tree/3.2.3/codeSnippets/snippets/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 app をクリックします。 Sevalla add app
  2. Gitリポジトリを選択し、適切なブランチ(通常はmainまたはmaster)を選択します。
  3. アプリケーション名を設定し、リージョンを選択し、ポッドサイズを選択します(0.5 CPU / 1GB RAMから開始できます)。
  4. Createをクリックしますが、デプロイ手順は今はスキップします。 Sevalla create app
  5. Settings -> Build に移動し、Build environmentカードの下にあるUpdate Settingsをクリックします。 Sevalla update build settings
  6. ビルド方法をDockerfileに設定します。 Sevalla Dockerfile settings
  7. Dockerfile pathDockerfileであり、Context.であることを確認します。
  8. アプリケーションのDeploymentタブに戻り、Deployをクリックします。

Sevallaは、Gitリポジトリをクローンし、Dockerfileを使用してDockerイメージをビルドし、PORT環境変数を注入し、アプリケーションを実行します。すべてが正しく構成されていれば、Ktorアプリはhttps://<your-app>.sevalla.appで公開されます。