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 提供了两种创建并配置服务器的方法:在代码中或使用配置文件。在本教程中,这两种方法的部署过程是相同的。

准备应用程序

第 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 中央仓库引用插件:

    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.yaml 文件中为您的应用程序配置 App Engine 设置:

  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