跳至主要內容
Mark Ku's Blog

前言

過去我對自架伺服器特別有興趣,多數經驗集中在地端環境,從自架 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
gcloud auth login
gcloud projects list
gcloud config set project PROJECT_ID

建立 Artifact Registry

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

  1. 建立存放區 建立存放區

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

  3. 選取建立好的 Registry > Setup instructions > 複製設定指令 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

推送映像到 Artifact Registry

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

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

Google Cloud Run 部署

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

從網頁手動部署

  1. 在 Cloud Run 中選擇「+Deploy Container」 manual deploy google cloud run step 1

  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

或也可以使用指令腳本部署至 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>

參考

作者

Mark Ku

10 年以上的軟體工程師,做過北美電商與 AI SaaS 訂閱收費系統。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可。

站長的公司

Vibe Coding 架構規劃與陪跑

團隊已經用 AI 做出小工具,卻怕壞了沒人修、需求一變就不敢改?226 Network 幫你把程式放進 Git、密碼另外保管、排程搬上固定主機,再補上交接文件與測試。

熱門文章

View all
Mark Ku
··634

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··471

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··267

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··214

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··210

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··209

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取