1. 事前準備
Google 提供強大的映像檔建構工具,可讓您在不使用 Docker 或 Dockerfile 的情況下,快速為 Java 應用程式建構並發布最佳化的 Docker 容器映像檔。Google Cloud 也為容器提供無伺服器技術:Cloud Run 是代管運算平台,可自動調整無狀態容器的資源配置。在本程式碼研究室中,您將瞭解如何輕鬆將 Spring Boot Kotlin 應用程式容器化、發布至 Container Registry,並在 Google Cloud 中順暢執行映像檔!
本程式碼研究室會逐步引導您使用 Kotlin 設定簡單的應用程式,示範如何使用 Jib、Container Registry 和 Cloud Run 等 Google Cloud 服務和工具。
必要條件
- 熟悉 Java 程式設計語言和工具
- 具備標準 Linux 文字編輯器 (例如 Vim、Emacs 和 nano) 的相關知識
學習內容
- 設定 Spring Boot Kotlin 應用程式。
- 建構最佳化的 Docker 映像檔。
- 將映像檔發布至 Container Registry。
- 在 Cloud Run 執行容器化應用程式。
軟硬體需求
- Google Cloud 專案
- 瀏覽器,例如 Google Chrome
2. 開始設定
自修環境設定
提醒您,專案 ID 是所有 Google Cloud 專案的專屬名稱 (已經有人使用上述名稱,很抱歉對您不符!)。稍後在本程式碼研究室中會稱為 PROJECT_ID
。
- 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Google Cloud 資源。
執行這個程式碼研究室並不會產生任何費用,如果有的話。請務必依照「清除所用資源」一節指示本節將說明如何關閉資源,這樣您就不會產生本教學課程結束後產生的費用。Google Cloud 的新使用者符合 $300 美元免費試用計畫的資格。
Cloud Shell
雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Cloud Shell,這是一種在 Google Cloud 中執行的指令列環境。
啟用 Cloud Shell
- 在 Cloud 控制台中,按一下「啟用 Cloud Shell」圖示 。
如果您先前從未啟動 Cloud Shell,您會看見中繼畫面 (需捲動位置),說明螢幕內容。如果出現這種情況,請按一下「繼續」 (之後不會再顯示)。以下是單次畫面的外觀:
佈建並連線至 Cloud Shell 只需幾分鐘的時間。
這個虛擬機器搭載您需要的所有開發工具。提供永久的 5 GB 主目錄,而且在 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`
- 在 Cloud Shell 中執行下列指令,確認 gcloud 指令知道您的專案:
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 -
請注意,Initializr 會自動將 spring-boot-starter-web
新增至範本應用程式 pom.xml
中的依附元件。
- 變更為範本應用程式的目錄。
$ cd kotlin-jib-cloud-run
- 使用 Maven 建構及執行應用程式。
$ ./mvnw -DskipTests spring-boot:run
- 啟動後,應用程式就會開始監聽通訊埠 8080。點選 Cloud Shell 工具列中的「網頁預覽」圖示 ,然後選取「透過以下通訊埠預覽: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:3.1.1: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 控制台,按一下「導覽選單」,然後選取「Container Registry」。
您會看到圖片已成功發布。
6. 在 Cloud Run 執行容器化應用程式
Cloud Run 為容器提供無伺服器技術,並能自動調整無狀態容器的資源配置。
- 再次點選「導覽選單」圖示 ,然後選取「Cloud Run」。
如果這是您第一次存取 Cloud Run,系統會顯示下列對話方塊,讓您完成一次性設定。如果畫面上顯示「Start Using Cloud Run」,請按一下該頁面。
- 在 Cloud Run 頁面中,按一下「Create Service」(建立服務)。
- 在下一個畫面中,按一下「來源」底下的「選取」。來源是您要在 Cloud Run 執行的映像檔。
- 對話方塊會顯示您先前建構的映像檔。選取圖片並按一下「繼續」。
- 只要按幾下滑鼠,即可立即部署應用程式。選取「Deployment platform」(部署平台) 下方的「Cloud Run (全代管)」,在 Google Cloud 上採用全代管服務。選擇適合您所在位置的區域,選取「允許未經驗證的叫用」,然後按一下「建立」。這樣就大功告成了!
映像檔完整部署後,Cloud Run 頁面會顯示用於存取應用程式的網址。快來一探究竟!
最終,您會看到預期應用程式訊息。
Kotlin app on Cloud Run, containerized by Jib!
大功告成!日後如需部署新的應用程式版本,請按一下頁面上的「Deploy New Revision」。
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,立即開始提供服務。