Skip to content

Google App Engine

初始專案: engine-main

最終專案: google-appengine-standard

在本教學課程中,我們將展示如何準備 Ktor 專案並將其部署到 Google App Engine 標準環境。本教學課程使用 engine-main 範例專案作為起始專案。

必要條件

在開始本教學課程之前,您需要執行以下步驟:

複製範例應用程式

要開啟範例應用程式,請按照以下步驟操作:

  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.9"
}

步驟 2:設定 App Engine 外掛程式

Google App Engine Gradle plugin 提供用於建置和部署 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.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 documentation

部署應用程式

要部署應用程式,請開啟終端機並按照以下步驟操作:

  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