Mark Ku's Blog
首頁 關於我
從地端到雲端 - 使�用 Artifact Registry 與 Cloud Run 的GCP Docker 容器部署指南
Cloud
從地端到雲端 - 使用 Artifact Registry 與 Cloud Run 的GCP Docker 容器部署指南
Mark Ku
Mark Ku
November 11, 2024
1 min

前言

過去我對自架伺服器特別有興趣,多數經驗集中在地端環境,從自架 Windows Server 和 Linux Server,到使用 Hyper-V 和 vSphere,並從 Windows Docker Container 到 Linux Docker Container 等技術都有涉略,隨著容器技術的發展和雲端便利性的提升,越來越多企業採用雲端伺服器,激起了我進一步探索雲端部署可能性的興趣。

地端 vs 雲端容器部署流程

  • 地端佈署流程
    Docker Build Image → Push Image to Private Registry → Docker Run

  • 雲端佈署流程
    Docker Build Image → Push Image to Google Artifact Registry → Google Cloud Run

環境說明

  • 作業系統:Windows 11,並在本地端安裝好 Docker Desktop
  • 可容器化的專案,並事先建立好 Dockerfile
  • GCP 專案 ID:gcr-my-project01 取得專案ID連結
  • Google Artifact Registry 主機位置:asia-east1-docker.pkg.dev ( 從Artifact Registry > 選勾 Registry > 設定操作說明 )

安裝 Google Cloud CLI

  1. 下載並安裝 Google Cloud CLI
(New-Object Net.WebClient).DownloadFile("https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe", "$env:Temp\GoogleCloudSDKInstaller.exe")
& $env:Temp\GoogleCloudSDKInstaller.exe
  1. Windows 安裝過程,會跳出安裝視窮,依據提示,下一步到底即可。
  2. 安裝完成後會詢問是否要登入及選擇那個Google專案( 當然你也可以打指令登入, ex: gcloud auth login
    gcp cli sign
    gcp cli sign

建立 Artifact Registry

進入 Artifact Registry,並取得 Registry 的 URL。

  1. 建立存放區

    建立存放區
    建立存放區

  2. 依照預設設定微調 > 建立

    artifact registry settings
    artifact registry settings

  3. 選取建立好的 Registry > Setup instructions > 複製設定指令

    get lcoal's set up command
    get lcoal's set up command
    注意: Windows 使用者請移除 \,使指令變為單行。

  4. 在本地端設定 Google Artifact Registry:

gcloud auth configure-docker asia-east1-docker.pkg.dev

設定完的畫面
設定完的畫面

建置與驗證 Docker 映像檔

  1. 首先,用指令切換到可容器化的專案,並事先建立好 Dockerfile
  2. 使用以下指令建置 Docker 映像檔:
docker build -t asia-east1-docker.pkg.dev/gcr-my-project01/my-registry/ec:v2 .
  1. 運行映像檔進行本地端測試:
docker run -d -p 8888:80 asia-east1-docker.pkg.dev/gcr-my-project01/my-registry/ec:v2
  1. 訪問 localhost:8888 測試容器服務,有沒有異常
    local container testing
    local container testing

推送映像到 Artifact Registry

docker push asia-east1-docker.pkg.dev/gcr-my-project01/my-registry/ec:v2

此時就能在你的registry 看到你剛推送的docker image

check registry
check registry

Google Cloud Run 部署

Google Cloud Run 支援透過網頁UI手動部署及用指令腳本部署

從網頁手動部署

  1. 在 Cloud Run 中選擇「+Deploy Container」

    manual deploy google cloud run step 1
    manual deploy google cloud run step 1

  2. 依照畫面指示完成設定

    manual deploy google cloud run step 2
    manual deploy google cloud run step 2

  3. 進入 Cloud Run,設定 Container(s)、Volumes、Networking、Security 等參數,並設定 Container port 為 80。

    manual deploy google cloud run step 3
    manual deploy google cloud run step 3

或也可以使用指令腳本部署至 Cloud Run

gcloud run deploy my-service --image=asia-east1-docker.pkg.dev/gcr-my-project01/my-registry/ec:v2 --platform managed --allow-unauthenticated --region=asia-east1 --port=80

自動化部署 - 執行完的畫面
自動化部署 - 執行完的畫面
此時,訪問這Url,檢查你的容器應用,並可以從Google Cloud Run 看到這個容器服務的狀態。

心得

使用 GCP CLI 之後,我發現它的操作方式其實和地端的指令相似,讓上手難度減少了不少,對於中小企業而言,這樣的雲端工具特別具有吸引力,不僅免去了購買實體伺服器的成本,也不需要煩惱軟體更新的問題,像是公司規模較小,日常維運的工作量並不足以需要一位專職的網管人員,而 GCP 的彈性方案讓我們可以依需求增減資源,更靈活地運用 IT 成本。

補充 - 透過重新部署服務來更新映像檔

方法 1: 使用 Google Cloud Console 網站更新映像檔

  1. 前往 Google Cloud Console.
  2. 導航到 Cloud Run.
  3. 點擊需要更新的服務。
  4. 點擊 編輯並部署新版本Deploy New Revision
  5. 容器映像 URL 欄位中輸入新的容器映像(例如:gcr.io/<project-id>/<image-name>:<tag>)。
  6. 配置其他設置(如需要),然後點擊 部署Deploy

方法 2: 使用 gcloud CLI 更新映像檔

如果使用命令行工具,可以使用 gcloud run deploy 命令來更新映像檔:

gcloud run deploy <SERVICE_NAME> \
  --image gcr.io/<PROJECT_ID>/<ARTIFACT_REGISTRY_URL>/<IMAGE_NAME>:<TAG> \
  --region <REGION>

參考


Tags

Mark Ku

Mark Ku

Software Developer

9年以上豐富網站開發經驗,開發過各種網站,電子商務、平台網站、直播系統、POS系統、SEO 優化、金流串接、AI 串接,Infra 出身,帶過幾次團隊,也加入過大團隊一起開發。

Expertise

前端(React)
後端(C#)
網路管理
DevOps
溝通
領導

Social Media

facebook github website

Related Posts

從地端到雲端:從設定到壓測:一步步實現 Google Kubernetes Engine 水平擴容及縮容
從地端到雲端:從設定到壓測:一步步實現 Google Kubernetes Engine 水平擴容及縮容
November 14, 2024
1 min

Quick Links

關於我

Social Media