Skip to content

Google App Engine

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

最終プロジェクト: google-appengine-standard

このチュートリアルでは、KtorプロジェクトをGoogle App Engine標準環境に準備してデプロイする方法を説明します。このチュートリアルでは、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.9"
}

ステップ2: App Engineプラグインの構成

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

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

    groovy
    pluginManagement {
        repositories {
            gradlePluginPortal()
            mavenCentral()
            maven("https://maven.pkg.jetbrains.space/public/p/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 App Engineドキュメントで確認できます。

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

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

  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