Google Cloud 對 Cloud Run 的願景很簡單:讓開發人員能夠在一個全代管、自動擴展的基礎架構上運行其原始碼,且該基礎架構具有以 HTTPS 保護的域名。但到目前為止,部署到 Cloud Run 至少需要兩個獨立的步驟:
- 將程式碼打包成容器化映像檔
- 將此容器化映像檔部署到 Cloud Run
儘管容器化映像檔已成為包裝、部署和擴展軟體的業界標準,但並非每個開發人員都想了解容器化的運作方式、或如何將其應用程式(以自己喜歡的語言編寫)構建成容器化映像檔中。
今天,Google Cloud 提供了一個便捷的單指令,讓您構建並部署程式碼到Cloud Run:
gcloud beta run deploy --source=[DIRECTORY]
此命令結合了 Google Cloud Buildpacks 的強大功能,使您可以從原始碼自動構建容器化映像檔,而 Cloud Build 可以遠端構建容器化映像檔,無需在虛擬機上安裝 Docker。
這種新的體驗支援 2 種構建模式, 兩者都是遠端發生的,且都不需要在您的虛擬機上安裝 Docker:
- 如果目錄中存在 Dockerfile,則將使用它構建上傳的原始碼。
- 如果目錄中沒有 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。)