Google 提供功能強大的映像檔建構工具,您可輕鬆建構及發布 Java 應用程式專用的最佳化 Docker 容器映像檔,無需使用 Docker 或 Dockerfile,Google Cloud 也透過 Cloud Run 為容器提供無伺服器功能。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
自行設定環境
請記住專案 ID,這是所有 Google Cloud 專案中不重複的名稱 (上述名稱已遭占用,因此不適用於您,抱歉!)。本程式碼研究室稍後會將其稱為 PROJECT_ID
。
- 接著,您必須在 Cloud 控制台中啟用帳單,才能使用 Google Cloud 資源。
完成這項程式碼研究室的費用不應超過數美元,但如果您決定使用更多資源,或是將資源繼續執行,則可能會增加費用。
Google Cloud 新使用者享有價值 $300 美元的免費試用期。
Cloud Shell
雖然可以從筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Cloud Shell,這是 Google Cloud 中執行的指令列環境。
啟用 Cloud Shell
- 在 Cloud Shell 中,按一下「啟用 Cloud Shell」圖示
。
如果您從未啟動過 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`
gcloud config list project
指令輸出
[core] project = <PROJECT_ID>
如未設定,請輸入下列指令設定專案:
gcloud config set project <PROJECT_ID>
指令輸出
Updated property [core/project].
- 使用 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
停止應用程式。
- 在示範套件中建立下列
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
停止應用程式。
使用 Jib,您可以在不使用 Docker 的情況下,以最佳化方式將應用程式容器化,並發布至任何容器登錄檔。
- 請先啟用 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 控制台,按一下「導覽選單」
,然後選取「Container Registry」。
你會看到圖片已成功發布。
Cloud Run 可將無伺服器技術導入容器,自動調整無狀態容器的資源配置。
- 再次按一下「導覽選單」
,然後選取「Cloud Run」。
如果您是第一次存取 Cloud Run,系統會顯示下列對話方塊,請完成一次性設定。如果看到「開始使用 Cloud Run」,請按一下。
- 在 Cloud Run 頁面中,按一下「建立服務」。
- 在下一個畫面中,按一下「來源」下方的「選取」。來源是您要在 Cloud Run 上執行的映像檔。
- 對話方塊會顯示您先前建構的映像檔。選取圖片,然後按一下「繼續」。
- 只要按幾下滑鼠,即可立即部署應用程式。在「Deployment platform」(部署平台) 下方,選擇「Cloud Run (fully managed)」(Cloud Run (全代管)),即可在 Google Cloud 上全代管服務。選擇適合您所在位置的區域,選取「Allow unauthenticated invocations」(允許未經驗證的叫用),然後按一下「Create」(建立)。就是這麼簡單!
映像檔完全部署後,Cloud Run 頁面會顯示存取應用程式的網址。快來看看!
最後,您會看到應用程式傳送的預期訊息。
Kotlin app on Cloud Run, containerized by Jib!
大功告成!日後如需部署新版應用程式,請按一下頁面上的「Deploy New Revision」(部署新修訂版本)。
- 如要清除環境,您必須刪除 Cloud Run 上部署的應用程式,以及 Container Registry 中發布的映像檔。前往 Cloud Run,選取應用程式,然後按一下「刪除」。
- 同樣地,前往 Container Registry 頁面並刪除映像檔。
恭喜!您已成功將 Spring Boot Kotlin 應用程式容器化,並部署至 Cloud Run!
您使用 Jib 建構了最佳化的容器映像檔,不必安裝 Docker 或編寫 Dockerfile,並將映像檔發布至 Container Registry。Jib 會最佳化映像檔建構作業,因此即使不具備 Docker 深入知識,也能快速有效率地容器化 Java 應用程式。接著按幾下滑鼠,將應用程式部署至 Cloud Run,即可立即開始提供服務。