Google App Engine
初始项目:engine-main
在本教程中,我们将向您展示如何准备 Ktor 项目并将其部署到 Google App Engine 标准环境。本教程使用 engine-main 示例项目作为起始项目。
前提条件
在开始本教程之前,您需要执行以下步骤:
- 在 Google Cloud Platform 中注册。
- 安装并初始化 Google Cloud SDK。
- 使用以下命令安装适用于 Java 的 App Engine 扩展程序:Bash
gcloud components install app-engine-java
克隆示例应用程序
要打开示例应用程序,请按照以下步骤操作:
- 克隆 Ktor 文档仓库并打开 codeSnippets 项目。
- 打开 engine-main 模块。
请注意,Ktor 提供了两种创建并配置服务器的方法:在代码中或使用配置文件。在本教程中,这两种方法的部署过程是相同的。
准备应用程序
第 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 中央仓库引用插件: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.yaml 文件中为您的应用程序配置 App Engine 设置:
在
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-default为该 Cloud 项目创建 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。
