1. 簡介

Cloud Run 是代管平台,能讓您執行可透過 HTTP 要求叫用的無狀態容器。Cloud Run 採用無伺服器技術,為您省去所有基礎架構管理工作,讓您專心處理最重要的事:建構出色應用程式。
這項服務是以 Knative 打造而成,可讓您選擇透過 Cloud Run 全代管的方式執行容器,或是透過 Cloud Run on GKE 在您的 Google Kubernetes Engine 叢集中執行容器。
本程式碼研究室的目標是協助您建構容器映像檔,並部署至 Cloud Run。
2. 設定和需求
自修實驗室環境設定
- 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶。



- 專案名稱是這個專案參與者的顯示名稱。這是 Google API 未使用的字元字串。你隨時可以更新。
- 專案 ID 在所有 Google Cloud 專案中都是不重複的,而且設定後即無法變更。Cloud 控制台會自動產生專屬字串,通常您不需要在意該字串為何。在大多數程式碼研究室中,您需要參照專案 ID (通常標示為
PROJECT_ID)。如果您不喜歡產生的 ID,可以產生另一個隨機 ID。你也可以嘗試使用自己的名稱,看看是否可用。完成這個步驟後就無法變更,且專案期間會維持不變。 - 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件。
- 接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,請刪除您建立的資源或專案。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。
Google Cloud Shell
雖然您可以透過筆電遠端操作 Google Cloud,但在本程式碼研究室中,我們將使用 Google Cloud Shell,這是可在雲端執行的指令列環境。
Cloud Shell 是一套線上開發與作業環境,可透過瀏覽器隨時隨地存取。Cloud Shell 的線上終端機已預先載入 kubectl、gcloud 指令列工具等公用程式,方便您管理資源。您也可以使用線上 Cloud Shell 編輯器開發、建構及部署雲端式應用程式,並為應用程式進行偵錯。
這部虛擬機器搭載您需要的所有開發工具,並提供永久的 5GB 主目錄,而且可在 Google Cloud 直接運作,大幅提升網路效能並強化驗證功能。也就是說,您只需要瀏覽器 (Chromebook 也可以) 就能完成本程式碼研究室。
- 如要從 Cloud 控制台啟用 Cloud Shell,只要按一下「啟用 Cloud Shell」:

如果您是首次啟動 Cloud Shell,系統會顯示中繼畫面,說明這個指令列環境。如果出現中繼畫面,請按一下「繼續」。

佈建環境只需要幾秒鐘的時間:

連至 Cloud Shell 後,您應該會看到驗證已完成:
gcloud auth list
指令輸出
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
專案也應已設為 PROJECT_ID (假設您已在網頁控制台中選取專案):
gcloud config list project
指令輸出
[core] project = <PROJECT_ID>
如果專案未設定,請發出下列指令:
gcloud config set project <PROJECT_ID>
在尋找「PROJECT_ID」嗎?查看 Cloud 控制台頂端的下拉式選單:

您也可以使用「設定和公用程式」部分查看專案詳細資料:

Cloud Shell 也會預設設定部分環境變數,這些變數在您執行後續指令時可能很有用。
echo $GOOGLE_CLOUD_PROJECT
指令輸出
<PROJECT_ID>
- 最後,您可以設定預設可用區:
gcloud config set compute/zone us-central1-f
你可以選擇不同時區。詳情請參閱「地區和區域」。
啟用 Cloud Run API
在 Cloud Shell 中啟用 Cloud Run API:
gcloud services enable run.googleapis.com
這時應該會顯示類似以下的成功訊息:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. 編寫範例應用程式
我們會建構簡單的 ASP.NET C# 應用程式,用於回應 HTTP 要求。
如要建立應用程式,請在 Cloud Shell 中使用 dotnet 指令列工具:
dotnet new web -o helloworld-csharp
切換至 helloworld-csharp 目錄:
cd helloworld-csharp
接著,更新 Program.cs 以符合下列內容:
var builder = WebApplication.CreateBuilder(args);
var port = Environment.GetEnvironmentVariable("PORT") ?? "8080";
var url = $"http://0.0.0.0:{port}";
builder.WebHost.UseUrls(url);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
這段程式碼會建立基本的網路伺服器,用於監聽 PORT 環境變數定義的通訊埠,並回覆 Hello World。
您可以在 Cloud Shell 中在本機執行應用程式,藉此測試應用程式。您應該會看到系統監聽通訊埠 8080:
$ dotnet run Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json... Hosting environment: Development Content root path: /home/atameldev/helloworld-csharp Now listening on: http://0.0.0.0:8080 Application started. Press Ctrl+C to shut down.
4. 部署至 Cloud Run
執行下列指令,將應用程式部署至 Cloud Run:
gcloud run deploy hello-world \
--allow-unauthenticated \
--region us-central1 \
--source .
hello-world是服務名稱。allow-unauthenticated旗標會將服務部署為公開服務,不設驗證規定。us-central1是要部署應用程式的地區。source旗標會決定要建構的來源位置。Cloud Run 會使用建構套件,根據原始碼自動建立容器。
請稍候幾分鐘,等待部署作業完成。部署成功後,指令列會顯示服務網址:
Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app
您現在可以在網路瀏覽器中開啟服務網址,造訪您所部署的容器:

恭喜!您已將封裝在容器映像檔的應用程式部署到 Cloud Run。Cloud Run 會自動水平擴充容器映像檔以處理收到的要求,並在需求減少時縮減規模。您只需要支付處理要求期間使用的 CPU、記憶體和網路費用。
5. 該清理了
如要避免產生費用,您可以刪除 GCP 專案,這樣一來,系統就會停止對該專案中使用的所有資源計費。此外,也可以直接刪除 Cloud Run 服務:
gcloud run services delete helloworld
6. 接下來要做什麼?
建議您接下來部署至 Cloud Run on GKE。
如要進一步瞭解如何從程式碼來源建構適用於 Cloud Run 的無狀態 HTTP 容器,並推送至 Container Registry,請參閱: