Skip to content

Google App Engine

初期プロジェクト: engine-main

完成プロジェクト: google-appengine-standard

このチュートリアルでは、KtorプロジェクトをGoogle App Engineのスタンダード環境(standard environment)向けに準備し、デプロイする方法を紹介します。このチュートリアルでは、engine-main サンプルプロジェクトをスタータープロジェクトとして使用します。

前提条件

このチュートリアルを始める前に、以下の手順を完了しておく必要があります。

  • Google Cloud Platform に登録する。
  • Google Cloud SDK をインストールして初期化する。
  • 以下のコマンドを使用して、Java用のApp Engine拡張機能をインストールする。
    Bash
    gcloud components install app-engine-java

サンプルアプリケーションのクローン

サンプルアプリケーションを開くには、以下の手順に従ってください。

  1. Ktorドキュメントのリポジトリをクローンし、codeSnippets プロジェクトを開きます。
  2. engine-main モジュールを開きます。

    Ktorには、コード内で、または設定ファイルを使用してサーバーを作成および設定するための2つのアプローチがあることに注意してください。このチュートリアルでは、デプロイのプロセスはいずれのアプローチでも同じです。

アプリケーションの準備

ステップ 1: Shadowプラグインの適用

このチュートリアルでは、fat JARを使用してGoogle App Engineにアプリケーションをデプロイする方法を示します。fat JARを生成するには、Shadowプラグインを適用する必要があります。build.gradle.ktsファイルを開き、pluginsブロックにプラグインを追加します。

kotlin
plugins {
    id("com.gradleup.shadow") version "8.3.10"
}

ステップ 2: App Engineプラグインの設定

Google App Engine Gradleプラグインは、Google App Engineアプリケーションをビルドおよびデプロイするためのタスクを提供します。このプラグインを使用するには、以下の手順に従ってください。

  1. settings.gradle.ktsファイルを開き、Maven Centralリポジトリからプラグインを参照するために以下のコードを挿入します。

    kotlin
    pluginManagement {
        repositories {
            gradlePluginPortal()
            mavenCentral()
            maven("https://redirector.kotlinlang.org/maven/ktor-eap")
        }
        resolutionStrategy {
            eachPlugin {
                if (requested.id.id.startsWith("com.google.cloud.tools.appengine")) {
                    useModule("com.google.cloud.tools:appengine-gradle-plugin:${requested.version}")
                }
            }
        }
    }
  2. build.gradle.ktsを開き、pluginsブロックでプラグインを適用します。

    kotlin
    plugins {
        id("com.google.cloud.tools.appengine") version "2.8.0"
    }
  3. build.gradle.ktsファイルに、以下の設定でappengineブロックを追加します。

    kotlin
    import com.google.cloud.tools.gradle.appengine.appyaml.AppEngineAppYamlExtension
    
    configure<AppEngineAppYamlExtension> {
        stage {
            setArtifact("build/libs/${project.name}-all.jar")
        }
        deploy {
            version = "GCLOUD_CONFIG"
            projectId = "GCLOUD_CONFIG"
        }
    }

ステップ 3: App Engineの設定

アプリケーションのApp Engine設定は、app.yamlファイルで行います。

  1. src/mainの中にappengineディレクトリを作成します。

  2. このディレクトリ内にapp.yamlファイルを作成し、以下の内容を追加します(google-appengine-standardをプロジェクト名に置き換えてください)。

    yaml
    runtime: java21
    entrypoint: 'java -jar google-appengine-standard-all.jar'

    entrypointオプションには、アプリケーション用に生成されたfat JARを実行するために使用されるコマンドが含まれます。

    サポートされている設定オプションに関する詳細は、Google AppEngineのドキュメントで確認できます。

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

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

  1. まず、アプリケーションリソースを保持するトップレベルのコンテナであるGoogle Cloudプロジェクトを作成します。例えば、以下のコマンドはktor-sample-app-engineという名前でプロジェクトを作成します。

    Bash
    gcloud projects create ktor-sample-app-engine --set-as-default
  2. Cloudプロジェクト用のApp Engineアプリケーションを作成します。

    Bash
    gcloud app create
  3. アプリケーションをデプロイするには、appengineDeploy Gradleタスクを実行します...

    Bash
    ./gradlew appengineDeploy

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

    ...done.
    Deployed service [default] to [https://ktor-sample-app-engine.ew.r.appspot.com]

    ビルド中に Cloud Build has not been used in project というエラーが発生した場合は、エラーレポートの指示に従って有効にしてください。

完成した例はこちらで確認できます: google-appengine-standard