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
サンプルアプリケーションのクローン
サンプルアプリケーションを開くには、以下の手順に従ってください。
- Ktorドキュメントのリポジトリをクローンし、codeSnippets プロジェクトを開きます。
- engine-main モジュールを開きます。
Ktorには、コード内で、または設定ファイルを使用してサーバーを作成および設定するための2つのアプローチがあることに注意してください。このチュートリアルでは、デプロイのプロセスはいずれのアプローチでも同じです。
アプリケーションの準備
ステップ 1: Shadowプラグインの適用
このチュートリアルでは、fat JARを使用してGoogle App Engineにアプリケーションをデプロイする方法を示します。fat JARを生成するには、Shadowプラグインを適用する必要があります。build.gradle.ktsファイルを開き、pluginsブロックにプラグインを追加します。
plugins {
id("com.gradleup.shadow") version "8.3.10"
}ステップ 2: App Engineプラグインの設定
Google App Engine Gradleプラグインは、Google App Engineアプリケーションをビルドおよびデプロイするためのタスクを提供します。このプラグインを使用するには、以下の手順に従ってください。
settings.gradle.ktsファイルを開き、Maven Centralリポジトリからプラグインを参照するために以下のコードを挿入します。kotlinpluginManagement { 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}") } } } }build.gradle.ktsを開き、pluginsブロックでプラグインを適用します。kotlinplugins { id("com.google.cloud.tools.appengine") version "2.8.0" }build.gradle.ktsファイルに、以下の設定でappengineブロックを追加します。kotlinimport 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ファイルで行います。
src/mainの中にappengineディレクトリを作成します。このディレクトリ内に
app.yamlファイルを作成し、以下の内容を追加します(google-appengine-standardをプロジェクト名に置き換えてください)。yamlruntime: java21 entrypoint: 'java -jar google-appengine-standard-all.jar'entrypointオプションには、アプリケーション用に生成されたfat JARを実行するために使用されるコマンドが含まれます。サポートされている設定オプションに関する詳細は、Google AppEngineのドキュメントで確認できます。
アプリケーションのデプロイ
アプリケーションをデプロイするには、ターミナルを開き、以下の手順に従ってください。
まず、アプリケーションリソースを保持するトップレベルのコンテナであるGoogle Cloudプロジェクトを作成します。例えば、以下のコマンドは
ktor-sample-app-engineという名前でプロジェクトを作成します。Bashgcloud projects create ktor-sample-app-engine --set-as-defaultCloudプロジェクト用のApp Engineアプリケーションを作成します。
Bashgcloud app createアプリケーションをデプロイするには、
appengineDeployGradleタスクを実行します...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
