程式碼研究室簡介
1. 事前準備
Google 提供功能強大的映像檔建構工具,可讓您輕鬆建構及發布適用於 Java 應用程式的最佳化 Docker 容器映像檔,無須使用 Docker 或 Dockerfile。Google Cloud 也透過 Cloud Run 將無伺服器技術導入容器,這套代管運算平台可自動為無狀態容器調度資源。在本程式碼研究室中,您將能瞭解將 Spring Boot Kotlin 應用程式容器化、發布至 Container Registry,以及在 Google Cloud 中順利執行映像檔的簡易程度!
這個程式碼研究室可引導您使用 Kotlin 設定簡易型應用程式,其中示範使用 Google Cloud 服務和工具,包括 Jib、Container Registry 和 Cloud Run。
必要條件
- 熟悉 Java 程式語言和工具
- 熟悉標準 Linux 文字編輯器,例如 Vim、Emacs 和 Nano
執行步驟
- 設定 Spring Boot Kotlin 應用程式。
- 建構最佳化的 Docker 映像檔。
- 將映像檔發布至 Container Registry。
- 在 Cloud Run 上執行容器化應用程式。
軟硬體需求
- Google Cloud 專案
- 瀏覽器,例如 Google Chrome
2. 開始設定
自行調整環境設定
- 登入 Cloud Console,建立新專案或重複使用現有專案。(如果您還沒有 Gmail 或 G Suite 帳戶,請先建立帳戶)。
提醒您,專案編號是所有 Google Cloud 專案的不重複名稱 (使用上述名稱後就無法使用,敬請見諒!)此程式碼研究室稍後將稱為 PROJECT_ID
。
- 接著,您必須在 Cloud Console 中啟用計費功能,才能使用 Google Cloud 資源。
完成這個程式碼研究室的成本應該不會超過新臺幣 $300 元,但如果您決定用到更多資源,或讓資源繼續運作,則可能需花費更多費用。
Google Cloud 新使用者可享有 $300 美元的免費試用期。
Cloud Shell
雖然您可以將 Google Cloud 從筆記型電腦遠端執行,在這個程式碼研究室中,您將使用 Cloud Shell,這個在 Google Cloud 中執行的指令列環境。
啟動 Cloud Shell
- 在 Cloud Console 中按一下 [啟用 Cloud Shell]
。
如果您之前從未啟動 Cloud Shell,系統會提供一個中繼畫面 (需捲動位置),說明其是什麼。如果是這種情況,請按一下繼續 (這樣就永遠不會再看到這個畫面)。這個一次性畫面的外觀如下:
佈建和連線至 Cloud Shell 只需要幾分鐘的時間。
這部虛擬機器已載入所有您需要的開發工具。這項服務提供永久性的 5GB 主目錄,可在 Google Cloud 中執行,大幅提升網路效能和驗證效能。透過這個程式碼研究室的大部分作業,只要用瀏覽器或 Chromebook 就能完成。
連線至 Cloud Shell 之後,您應該已經看到已通過驗證,且專案已設為專案 ID。
- 在 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].
3. 初始化 Spring Boot 應用程式
- 使用 Spring Initializr 產生新的 Spring Boot 應用程式。
$ curl https://start.spring.io/starter.tgz \ -d language=kotlin \ -d dependencies=web \ -d baseDir=kotlin-jib-cloud-run | tar -xzvf -
請注意,初始化工具會自動將 spring-boot-starter-web
加入範本應用程式的 pom.xml
中。
- 變更為範本應用程式的目錄。
$ cd kotlin-jib-cloud-run
- 使用 Maven 建構並執行應用程式。
$ ./mvnw -DskipTests spring-boot:run
- 應用程式啟動時,應用程式將開始聽取通訊埠 8080。按一下 Cloud Shell 工具列中的 [Web Preview] (網頁預覽)
,然後選取 [Preview on Port 8080] (在通訊埠 8080 上預覽),即可存取應用程式。
- 您應該傳回 404 回應,原因是應用程式並未提供任何實用功能。停止與「
Control+C
」相關的應用程式。
4. 新增網頁控制器
- 在試用版套件中建立下列
Controller
類別:
$ vi src/main/kotlin/com/example/demo/Controller.kt or $ nano src/main/kotlin/com/example/demo/Controller.kt
src/main/kotlin/com/example/demo/Controller.kt
package com.example.demo
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class Controller {
@GetMapping("/")
fun saySomething(): String {
return "Kotlin app on Cloud Run, containerized by Jib!"
}
}
- 重新建構並執行應用程式。
$ ./mvnw spring-boot:run
- 使用網頁預覽
再次檢查應用程式。這次應會顯示「
Kotlin app on Cloud Run, containerized by Jib!
」訊息。停止使用「Control+C
」的應用程式。
5. 將應用程式容器化並發布至 Container Registry
使用 Jib 時,不需使用 Docker 就能以最佳化的方式容器化應用程式,並發布至任何 Container Registry。
- 如要繼續操作,請先啟用 Container Registry API。每項專案只需進行一次操作,就能存取這個 API。
$ gcloud services enable containerregistry.googleapis.com
- 執行 Jib 以建構 Docker 映像檔並發布至 Container Registry。
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:1.8.0:build \ -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run
最後,您會看到下列訊息,表示應用程式已容器化並推送至 Container Registry。
[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run ... [INFO] BUILD SUCCESS
如果系統顯示錯誤訊息,請再次檢查您的 $GOOGLE_CLOUD_PROJECT
是否已正確設為您的 Google Cloud 專案 ID (PROJECT_ID
)。
- 進行後續步驟前,請檢查圖片是否已成功發布。返回 Cloud Console,按一下 [導覽選單]
,然後選取 [Container Registry]。
即可看到已成功發布圖片。
6. 在 Cloud Run 上執行容器化應用程式
Cloud Run 讓無伺服器服務導入容器,並自動調度無狀態容器的資源配置。
- 再按一下「導覽選單」圖示
,然後選取 [Cloud Run]。
如果這是您第一次存取 Cloud Run,您將看到下列一次性設定對話方塊。如果出現 [開始使用 Cloud Run],請按一下。
- 在 Cloud Run 頁面上,按一下 [Create Service]。
- 在下一個畫面中,按一下「Source」(來源) 底下的 [Select] (選取)。來源是指您要在 Cloud Run 上執行的映像檔。
- 這個對話方塊會顯示您先前建立的映像檔。選取圖片並按一下 [繼續]。
- 只要按幾下滑鼠,就能立即部署應用程式。在「Deployment Platform」下方,選擇 [Cloud Run (全代管)] 即可讓服務在 Google Cloud 上完全受到管理。選擇位置適用的地區,選取 [允許未經驗證的叫用],然後按一下 [建立]。這樣就大功告成了!
映像檔部署完成後,Cloud Run 頁面會顯示存取應用程式的網址。立即查看!
最後,您會看到這個應用程式顯示的訊息。
Kotlin app on Cloud Run, containerized by Jib!
大功告成!日後如要部署新的應用程式版本,請按一下頁面上的 [部署新的修訂版本]。
7. 清除所用資源
- 如要清理環境,您必須刪除在 Cloud Run 上部署的應用程式,以及在 Container Registry 中發布的映像檔。前往 Cloud Run 並選取應用程式,然後按一下 [刪除]。
- 同樣地,請前往 Container Registry 頁面並刪除映像檔。
8. 恭喜
恭喜!您已成功將 Spring Boot Kotlin 應用程式容器化並部署至 Cloud Run!
使用 Jib 時,您無須安裝 Docker 就能建立最佳化容器映像檔,或是編寫 Dockerfile 並將其發布到 Container Registry。Jib 將映像檔建構最佳化,因此即便使用者沒有深入的 Docker 知識,也能以快速且有效率的方式為 Java 應用程式容器化。然後,只要按幾下滑鼠,就能將應用程式部署至 Cloud Run,立刻開始提供服務。