Sevalla
このチュートリアルでは、KtorアプリケーションをSevallaに準備してデプロイする方法を学びます。Ktorサーバーの作成方法に応じて、以下のいずれかの初期プロジェクトを使用できます。
前提条件
このチュートリアルを開始する前に、Sevallaアカウントを作成する必要があります(50ドルの無料クレジットが付属しています)。
サンプルアプリケーションをクローンする
サンプルアプリケーションを開くには、以下の手順に従ってください。
- Ktorドキュメントリポジトリをクローンします。
- codeSnippetsプロジェクトを開きます。
- embedded-serverまたはengine-mainサンプルを開きます。これらは、Ktorサーバーを設定するための2つの異なるアプローチ(コード内で直接設定するか、外部設定ファイルを使用するか)を示すものです。これらのプロジェクトをデプロイする上での唯一の違いは、受信リクエストをリッスンするために使用するポートの指定方法です。
アプリケーションを準備する
ステップ1: ポートを設定する
Sevallaは、PORT
環境変数を使用してランダムなポートを注入します。アプリケーションはそのポートをリッスンするように設定する必要があります。
コードでサーバー構成が指定されているembedded-serverサンプルを選択した場合、System.getenv()
を使用して環境変数値を取得できます。src/main/kotlin/com/exampleフォルダーにあるApplication.ktファイルを開き、embeddedServer()
関数のポートパラメーター値を以下に示すように変更します。
fun main() {
val port = System.getenv("PORT")?.toIntOrNull() ?: 8080
embeddedServer(Netty, port = port, host = "0.0.0.0") {
// ...
}.start(wait = true)
}
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
)を選択します。 - アプリケーション名を設定し、リージョンを選択し、ポッドサイズを選択します(0.5 CPU / 1GB 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
で公開されます。