將 Spring Boot 應用程式部署至 App Engine 標準環境

App Engine 應用程式建立、易於維護,且可因應流量和資料儲存空間需求的變化而輕鬆擴充。App Engine 完全不需要維護伺服器。只要上傳您的應用程式,即可開始使用。

App Engine 應用程式會根據傳入的流量自動調整資源配置。負載平衡、微服務、授權、SQL 和 NoSQL 資料庫、記憶體快取、流量拆分、記錄、搜尋、版本管理、推出與復原,以及安全性掃描都內建支援,並且具備高度自訂功能。

App Engine 標準環境App Engine 彈性環境支援多種程式設計語言,包括 Java、Python、PHP、NodeJS 和 Go。這兩個環境可讓開發人員以最靈活的方式運用應用程式的行為。每個環境都有某些優點。詳情請參閱選擇 App Engine 環境

您將學習如何將 Spring Boot 應用程式部署至 App Engine 標準環境。標準環境會在無人使用的情況下自動縮減為零個執行個體,並自動向上擴充!

事前準備

  • 熟悉 Java 程式語言和工具
  • 熟悉標準 Linux 文字編輯器,例如 Vim、Emacs 和 Nano

要執行的步驟

  • 如何在 App Engine 中建立 Spring Boot Java 應用程式

軟硬體需求

自行調整環境設定

  1. 登入 Cloud Console,建立新專案或重複使用現有專案。(如果您還沒有 Gmail 或 G Suite 帳戶,請先建立帳戶)。

提醒您,專案編號是所有 Google Cloud 專案的不重複名稱 (使用上述名稱後就無法使用,敬請見諒!)此程式碼研究室稍後將稱為 PROJECT_ID

  1. 接著,您必須在 Cloud Console 中啟用計費功能,才能使用 Google Cloud 資源。

完成這個程式碼研究室的成本應該不會超過新臺幣 $300 元,但如果您決定用到更多資源,或讓資源繼續運作,則可能需花費更多費用。

Google Cloud 新使用者可享有 $300 美元的免費試用期

Cloud Shell

您將使用 Cloud Shell,這是一個在 Google Cloud 中執行的指令列環境。

啟動 Cloud Shell

  1. 在 Cloud Console 中按一下 [啟用 Cloud Shell]

如果您之前從未啟動 Cloud Shell,系統會提供一個中繼畫面 (需捲動位置),說明其是什麼。如果是這種情況,請按一下繼續 (這樣就永遠不會再看到這個畫面)。這個一次性畫面的外觀如下:

佈建和連線至 Cloud Shell 只需要幾分鐘的時間。

這部虛擬機器已載入所有您需要的開發工具。這項服務提供永久性的 5GB 主目錄,可在 Google Cloud 中執行,大幅提升網路效能和驗證效能。透過這個程式碼研究室的大部分作業,只要用瀏覽器或 Chromebook 就能完成。

連線至 Cloud Shell 之後,您應該已經看到已通過驗證,且專案已設為專案 ID。

  1. 在 Cloud Shell 中執行下列指令,確認您的身分已通過驗證:
gcloud auth list

指令輸出

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

指令輸出

[core]
project = <PROJECT_ID>

如果沒有,則可使用下列指令設定:

gcloud config set project <PROJECT_ID>

指令輸出

Updated property [core/project].

Cloud Shell 啟動後,您可以使用指令列使用 Spring Initializr 產生新的 Spring Boot 應用程式。

$ curl https://start.spring.io/starter.tgz \
  -d bootVersion=2.1.8.RELEASE \
  -d dependencies=web \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

部署 Java Server 應用程式的方法有兩種:使用 Maven App Engine Plugin 或 Gradle App Engine Plugin,或是部署 war 套件目錄。您將使用 Maven App Engine Plugin 部署應用程式。

新增 Maven App Engine Plugin

更新 pom.xml 以納入簡化部署程序的 Google Cloud 外掛程式。您可以使用 Vim、Nano 或 Emacs 編輯檔案。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>2.1.0</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>
  1. 如要將應用程式部署至 App Engine 標準環境,您必須建立新的 src/main/appengine/app.yaml 描述元檔案。
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. 編輯 src/main/appengine/app.yaml 檔案,並新增下列內容:

src/main/appengine/app.yaml

runtime: java11
instance_class: F4

新增可在 DemoApplication.java 中傳回 "hello world!" 的新控制器。

src/main/java/com/example/demo/DemoApplication.java

package com.example.demo;

...

// Add imports
import org.springframework.web.bind.annotation.*;

@SpringBootApplication
@RestController
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }

  @GetMapping("/")
  public String hello() {
    return "hello world!";
  }
}
  1. 您可以使用 Spring Boot 外掛程式啟動 Spring Boot 應用程式:
$ ./mvnw -DskipTests spring-boot:run
  1. 應用程式啟動後,按一下 Cloud Shell 工具列中的 [Web Preview] (網頁預覽),然後選取 [透過以下埠預覽:8080]

在瀏覽器中開啟一個分頁,並連結至您啟動的伺服器。

  1. 首先,請將專案初始化,以便執行 App Engine 應用程式。此外,也要初始化在美國中央地區執行的專案。
$ gcloud app create --region us-central
You are creating an app for project [...].
WARNING: Creating an App Engine application for a project is irreversible and the region
cannot be changed. More information about regions is at
https://cloud.google.com/appengine/docs/locations
  1. 然後執行 mvn appengine:deploy,將應用程式部署至 App Engine 標準環境。
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. 應用程式部署完成後,您可以在瀏覽器中開啟 http://<project-id>.appspot.com 或在 Cloud Shell 中執行下列指令:
$ gcloud app browse
... [It may print out the URL for your app]

您已學會編寫第一個 App Engine 網路應用程式!

瞭解詳情