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()を使用して環境変数の値を取得できます。Application.ktファイル(src/main/kotlin/com/exampleフォルダ内)を開き、以下に示すように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が必要です。以下は、マルチステージビルド(multi-stage build)を使用した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. application name(アプリケーション名)を設定し、region(リージョン)を選択し、pod size(ポッドサイズ)を選択します(0.5 CPU / 1GB RAMから開始できます)。
  4. Create をクリックしますが、現時点ではデプロイ手順をスキップします。 Sevalla create app
  5. Settings -> Build に移動し、Build environment カードの下にある Update Settings をクリックします。 Sevalla update build settings
  6. ビルド方法(Build method)を Dockerfile に設定します。 Sevalla Dockerfile settings
  7. Dockerfile pathDockerfile で、Context(コンテキスト)が . であることを確認します。
  8. アプリケーションの Deployment タブに戻り、Deploy をクリックします。

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