手把手教你以單指令快速建構、部署至 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。)


連絡「GCP 專門家」
想在手機閱讀更多程式設計資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems