Skip to content

Heroku

このチュートリアルでは、KtorアプリケーションをHerokuに準備してデプロイする方法を説明します。

前提条件

このチュートリアルを開始する前に、以下の前提条件が満たされていることを確認してください。

  • Herokuアカウントを持っていること。
  • お使いのマシンにHeroku CLIがインストールされていること。

サンプルアプリケーションの作成

新しいKtorプロジェクトの作成、開く、実行で説明されているように、サンプルアプリケーションを作成します。

Ktorには、サーバーを作成および設定する2つのアプローチがあります。コードで設定するか、構成ファイルを使用するかです。デプロイにおける唯一の違いは、着信リクエストをリッスンするために使用するポートを指定する方法です。

アプリケーションの準備

ステップ1: ポートの構成

まず、着信リクエストをリッスンするために使用するポートを指定する必要があります。HerokuはPORT環境変数を使用するため、この変数の値を使用するようにアプリケーションを構成する必要があります。Ktorサーバーを構成する方法に応じて、以下のいずれかを実行します。

  • サーバー構成がコードで指定されている場合、System.getenvを使用して環境変数の値を取得できます。src/main/kotlin/com/exampleフォルダーに配置されているApplication.ktファイルを開き、以下に示すようにembeddedServer関数のportパラメーター値を変更します。

    kotlin
    fun main() {
       embeddedServer(Netty, port = System.getenv("PORT").toInt()) {
           // ...
       }.start(wait = true)
    }
  • サーバー構成がapplication.confファイルで指定されている場合、${ENV}構文を使用して環境変数をportパラメーターに割り当てることができます。src/main/resourcesに配置されているapplication.confファイルを開き、以下に示すように更新します。

    ktor {
        deployment {
            port = 8080
            port = ${?PORT}
        }
    }

ステップ2: stageタスクの追加

build.gradle.ktsファイルを開き、HerokuがHerokuのプラットフォームで実行される実行可能ファイルを作成するために使用するカスタムstageタスクを追加します。

kotlin
tasks {
    create("stage").dependsOn("installDist")
}

installDistタスクはGradleのアプリケーションプラグインに含まれており、これはすでにサンプルプロジェクトに追加されていることに注意してください。

ステップ3: Procfileの作成

プロジェクトのルートにProcfileを作成し、以下の内容を追加します。

web: ./build/install/ktor-get-started-sample/bin/ktor-get-started-sample

このファイルは、stageタスクによって生成されたアプリケーションの実行可能ファイルへのパスを指定し、Herokuがアプリケーションを起動できるようにします。 ktor-get-started-sampleをプロジェクト名に置き換える必要がある場合があります。

アプリケーションのデプロイ

Gitを使用してアプリケーションをHerokuにデプロイするには、ターミナルを開いて以下の手順に従ってください。

  1. 前のセクションで行った変更をローカルでコミットします。

    Bash
    git add .
    git commit -m "Prepare app for deploying"
  2. Heroku CLIにログインします。

    Bash
    heroku login
  3. heroku createコマンドを使用してHerokuアプリケーションを作成します。 ktor-sample-herokuをアプリケーションの名前に置き換える必要があります。

    Bash
    heroku create ktor-sample-heroku

    このコマンドは2つのことを行います。

    • 新しいHerokuアプリケーションを作成します。これはWebダッシュボードで利用可能です。
    • ローカルリポジトリにherokuという新しいGitリモートを追加します。
  4. アプリケーションをデプロイするには、変更をheroku mainにプッシュします...

    Bash
    git push heroku main

    ...そして、Herokuがアプリケーションをビルドして公開するまで待ちます。

    ...
    remote: https://ktor-sample-heroku.herokuapp.com/ deployed to Heroku
    remote:
    remote: Verifying deploy... done.