Heroku
このチュートリアルでは、KtorアプリケーションをHerokuにデプロイするための準備とデプロイ方法について説明します。
前提条件
このチュートリアルを開始する前に、以下の前提条件が満たされていることを確認してください。
- Herokuアカウントを持っていること。
- Heroku CLI がマシンにインストールされていること。
サンプルアプリケーションの作成
Ktorプロジェクトの作成、オープン、実行の説明に従って、サンプルアプリケーションを作成します。
Ktorにはサーバーを作成および構成するための2つのアプローチ(コード内での設定、または設定ファイルの使用)があることに注意してください。デプロイにおける唯一の違いは、着信リクエストを待機するために使用されるポートの指定方法です。
アプリケーションの準備
ステップ1:ポートの構成
まず、着信リクエストを待機するために使用するポートを指定する必要があります。Herokuは PORT 環境変数を使用するため、この変数の値を使用するようにアプリケーションを構成する必要があります。Ktorサーバーを構成する方法に応じて、以下のいずれかを行ってください。
サーバーの構成がコード内で指定されている場合は、
System.getenvを使用して環境変数の値を取得できます。<Path>src/main/kotlin/com/example</Path>フォルダにある<Path>Application.kt</Path>ファイルを開き、以下に示すようにembeddedServer()関数のportパラメータの値を変更します。kotlinfun main() { embeddedServer(Netty, port = System.getenv("PORT")?.toIntOrNull() ?: 8080) { // ... }.start(wait = true) }サーバーの構成が
<Path>application.conf</Path>ファイルで指定されている場合は、${ENV}構文を使用して環境変数をportパラメータに割り当てることができます。<Path>src/main/resources</Path>にある<Path>application.conf</Path>ファイルを開き、以下のように更新します。ktor { deployment { port = 8080 port = ${?PORT} } }
ステップ2:stageタスクの追加
<Path>build.gradle.kts</Path> ファイルを開き、カスタム stage タスクを追加します。Herokuは stage タスクを使用して、Herokuのプラットフォームで実行される実行ファイルを作成します。
tasks {
create("stage").dependsOn("installDist")
}
installDistタスクはGradleの applicationプラグイン に含まれており、サンプルプロジェクトにはすでに追加されています。
ステップ3:Procfileの作成
プロジェクトのルートに Procfile を作成し、以下の内容を追加します。
web: ./build/install/ktor-get-started-sample/bin/ktor-get-started-sampleこのファイルは、stage タスクによって生成されたアプリケーションの実行ファイルへのパスを指定し、Herokuがアプリケーションを開始できるようにします。 ktor-get-started-sample をプロジェクト名に置き換える必要がある場合があります。
ステップ4:Javaバージョンの指定(オプション)
デフォルトでは、Herokuはアプリケーションの実行にJava 25を使用します。Ktorアプリケーションが別のJavaバージョンでコンパイルされている場合は、デプロイの失敗を避けるために明示的に指定する必要があります。
Javaバージョンを指定するには、プロジェクトのルートフォルダに以下の内容で <Path>system.properties</Path> ファイルを作成します。
java.runtime.version=2121 を希望のJavaバージョンに置き換えてください。
詳細については、Javaバージョンの指定に関するHerokuのドキュメントを参照してください。
アプリケーションのデプロイ
Gitを使用してHerokuにアプリケーションをデプロイするには、新しいターミナルウィンドウを開き、以下の手順に従います。
前のセクションで行った変更をローカルにコミットします。
Bashgit add . git commit -m "Prepare app for deploying"Heroku CLIにログインします。
Bashheroku loginheroku createコマンドを使用してHerokuアプリケーションを作成します。ktor-sample-herokuをアプリケーションの名前に置き換えてください。Bashheroku create ktor-sample-herokuこのコマンドは2つのことを行います。
- Webダッシュボードで利用可能な新しいHerokuアプリケーションを作成します。
- ローカルリポジトリに
herokuという名前の新しいGitリモートを追加します。
アプリケーションをデプロイするには、変更を
heroku mainにプッシュします。Bashgit push heroku mainHerokuがアプリケーションをビルドして公開するまで待ちます。完了すると、次のような出力が表示されます。
bash... remote: https://ktor-sample-heroku.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done.
