Sevalla
このチュートリアルでは、KtorアプリケーションをSevallaに準備およびデプロイする方法を学びます。Ktorサーバーの作成方法に応じて、以下のいずれかの初期プロジェクトを使用できます。
前提条件
このチュートリアルを始める前に、Sevallaアカウントを作成する必要があります(50ドルの無料クレジットが付属しています)。
サンプルアプリケーションのクローン
サンプルアプリケーションを開くには、以下の手順に従ってください。
- Ktorドキュメントのリポジトリをクローンします。
- codeSnippetsプロジェクトを開きます。
- embedded-serverまたはengine-mainサンプルを開きます。これらは、コード内で直接構成するか、外部構成ファイルを介して構成するかの、Ktorサーバーをセットアップする2つの異なるアプローチを示しています。これらのプロジェクトのデプロイにおける唯一の違いは、受信リクエストをリッスンするために使用するポートの指定方法です。
アプリケーションの準備
ステップ1:ポートの構成
Sevallaは、PORT環境変数を使用してランダムなポートを注入します。アプリケーションはそのポートでリッスンするように構成されている必要があります。
サーバー構成がコードで指定されているembedded-serverサンプルを選択した場合は、System.getenv()を使用して環境変数の値を取得できます。Application.ktファイル(src/main/kotlin/com/exampleフォルダ内)を開き、以下に示すようにembeddedServer()関数のポートパラメータ値を変更します。
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ファイルを開き、以下のように更新します。
ktor {
deployment {
port = 5000
port = ${?PORT}
}
application {
modules = [ com.example.ApplicationKt.module ]
}
}ステップ2:Dockerfileの追加
SevallaでKtorプロジェクトをビルドして実行するには、Dockerfileが必要です。以下は、マルチステージビルド(multi-stage build)を使用した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(ポッドサイズ)を選択します(0.5 CPU / 1GB RAMから開始できます)。
- Create をクリックしますが、現時点ではデプロイ手順をスキップします。

- Settings -> Build に移動し、Build environment カードの下にある Update Settings をクリックします。

- ビルド方法(Build method)を Dockerfile に設定します。

- Dockerfile path が
Dockerfileで、Context(コンテキスト)が.であることを確認します。 - アプリケーションの Deployment タブに戻り、Deploy をクリックします。
SevallaはGitリポジトリをクローンし、Dockerfileを使用してDockerイメージをビルドし、PORT環境変数を注入して、アプリケーションを実行します。すべてが正しく構成されていれば、Ktorアプリは https://<your-app>.sevalla.app で公開されます。
