手把手教你以單指令快速建構、部署至 Cloud Run,建 container image 不用煩惱!

Google Cloud 對 Cloud Run 的願景很簡單:讓開發人員能夠在一個全代管、自動擴展的基礎架構上運行其原始碼,且該基礎架構具有以 HTTPS 保護的域名。但到目前為止,部署到 Cloud Run 至少需要兩個獨立的步驟:

  1. 將程式碼打包成容器化映像檔
  2. 將此容器化映像檔部署到 Cloud Run

儘管容器化映像檔已成為包裝、部署和擴展軟體的業界標準,但並非每個開發人員都想了解容器化的運作方式、或如何將其應用程式(以自己喜歡的語言編寫)構建成容器化映像檔中。

今天,Google Cloud 提供了一個便捷的單指令,讓您構建並部署程式碼到Cloud Run:

gcloud beta run deploy --source=[DIRECTORY]

此命令結合了 Google Cloud Buildpacks 的強大功能,使您可以從原始碼自動構建容器化映像檔,而 Cloud Build 可以遠端構建容器化映檔,無需在虛擬機上安裝 Docker。

這種新的體驗支援 2 種構建模式, 兩者都是遠端發生的,且都不需要在您的虛擬機上安裝 Docker:

  1. 如果目錄中存在 Dockerfile,則將使用它構建上傳的原始碼。
  2. 如果目錄中沒有 Dockerfile,則 buildpacks 會自動檢測您所使用的語言,獲取程式碼的依賴項,並從中製作 production-ready 的容器化映像檔。

讓我們看一個 Python 應用程式的範例。 (如果您沒有開發環境,請進入shell.cloud.google.com,在瀏覽器中獲取一個 shell。)首先,獲取原始碼:

git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git

cd buildpack-samples/sample-python

 

然後,使用單指令構建並部署此應用程式(沒有Dockerfile):

$ gcloud beta run deploy my-app --source .
Building using Buildpacks and deploying container to Cloud Run service.
✓ Building and deploying... Done.
  ✓ Uploading sources...
  ✓ Building Container...
  ✓ Creating Revision...
  ✓ Routing traffic...
Done.
Service URL: https://sample-python-[...]-uc.a.run.app

這個指令將您從原始碼帶到一個URL,以便使 Cloud Run 接收 production 流量。

如何運作?

這個新命令只是用於 “gcloud builds submit”和gcloud run deploy –image=[…]”.

在此情境下,我們的 Python 範例應用程式沒有 Dockerfile。Buildpacks 自動確定這是一個Python 應用程式,然後從 requirements.txt 檔案確定應用程式的依賴關係。最後,它查看 Procfile 以確定如何啟動此 Python伺服器。

作為此過程的一部分,buildpacks 為您的容器化映像檔選擇一個安全的基本映像檔。 如此一來,您不必擔心如何管理基本映像檔,因為它將由 Google 維護。如果需要,您的下一個部署將自動獲取安全修復程式。

通過運行此指令,gcloud 會發送一個隨選構建作業,該作業在 Cloud Build 上遠端運行。作為開發人員,您不必擔心沒有在地端構建容器化映像檔的工具,也不必擔心如何將程式碼轉換為容器化映像檔。

其實,如果您通常是運行“docker push”再運行“docker build -t […]” 的開發人員,則你可以通過運行以下指令,用 Cloud Build 替換地端 Docker 工作流程:

gcloud builds submit -t [...]

 

這樣一來,它可以構建生成的映像檔並推送到 Artifact Registry,甚至無需在您的虛擬機上運行 Docker。

從原始碼自動構建

從地端虛擬機上部署原始碼是解決問題的一種好方法,但從長遠來看卻不是最佳解,因為地端來源可能包含未版本化的更改。我們建議將更改推送到您的 Git 資料庫時,自動進行部署。為了解決這個問題,Google Cloud 之前發布了一種方法,可以輕鬆地連接、配置持續性部署到您的 Cloud Run 服務。透過將 GitHub 資料庫連接到 Cloud Run,您可以配置構建和部署資料庫,而無需編寫 Dockerfile 或構建文件。

要配置自動構建,請在部署新的 Cloud Run服務時選擇「從來源資料庫連續部署新修訂」,連接您的資料庫,然後選擇用 Google Cloud Buildpacks 構建來源的選項:

設置完成後,推送到您配置的分支的更改,將自動構建在 Cloud Build 上,並安全地部署到 Cloud Run。您可以直接在 Google Cloud Console 上監控這些構建的狀態和歷史記錄。

我們很期待看到您嘗試使用此新功能,試試看 buildpacks 如何將應用程式的程式碼自動轉換為容器化映像檔,並部署到 Cloud Run。也許您有一天就不再需要 Dockerfile 了!您也可以從這個 GitHub 提供對 Google Cloud Buildpacks 專案的反饋。

(本文翻譯改編自 Google Cloud。)