在 GCP 上建立網站
課程概述
想在 GCP 上架網站,方法不只一種。從單純的靜態網頁,到比較複雜的動態應用,Google Cloud 都接得住。這堂課我們挑三種最常見的做法來比一比:Cloud Storage 靜態託管、Cloud Run 容器化部署,還有 Firebase Hosting 全端方案。

先看網站形狀再選平台:純 HTML/CSS/JS 可走物件儲存與 CDN;任意後端容器走 Cloud Run; 需要 Auth、Firestore 等整合體驗時考慮 Firebase Hosting;既有框架與 PaaS 慣例則可評估 App Engine。 自訂網域與 HTTPS 是四條路共同的入口層。
你將學到
- 使用 Cloud Storage 託管靜態網站
- 透過 Cloud Run 部署容器化 Web 應用
- 設定自訂網域與 SSL 憑證
- 理解不同部署方案的成本與效能差異
核心概念
網站部署方案比較
| 方案 | 適用類型 | 自動擴展 | 自訂網域 | 免費額度 |
|---|---|---|---|---|
| Cloud Storage | 純靜態網站 | 自動 | 需搭配 LB | 5GB 儲存 |
| Cloud Run | 動態應用/API | 0→N 自動 | 內建支援 | 200 萬次請求/月 |
| Firebase Hosting | 全端應用 | 自動 | 內建支援 | 10GB 傳輸/月 |
| App Engine | 傳統 Web App | 自動 | 內建支援 | 28 小時/天 |
%%{init: {"flowchart": {"curve": "linear", "nodeSpacing": 24, "rankSpacing": 32}}}%%
flowchart TD
SITE["盤點頁面內容、後端邏輯、<br/>整合服務與發布方式"] --> STATIC{"只有 HTML、CSS、JS<br/>與靜態資產?"}
STATIC -->|"是"| FIREBASE{"需要 Firebase Auth、<br/>Preview Channel 或整合式 CLI?"}
FIREBASE -->|"是"| HOSTING["Firebase Hosting"]
FIREBASE -->|"否"| STORAGE["Cloud Storage + HTTPS LB + CDN"]
STATIC -->|"否"| CONTAINER{"應用能包成任意<br/>HTTP 容器?"}
CONTAINER -->|"是"| RUN["Cloud Run"]
CONTAINER -->|"否"| PaaS{"既有框架符合受管 Runtime,<br/>並偏好 PaaS 慣例?"}
PaaS -->|"是"| APP["App Engine"]
PaaS -->|"否"| REDESIGN["重新確認執行環境與架構限制"]
流程圖暫時無法顯示,請重新整理頁面後再試。
Cloud Storage 靜態網站
# 建立 bucket(名稱需與網域一致)
gcloud storage buckets create gs://www.example.com --location=us-central1
# 上傳網站檔案
gcloud storage cp -r ./website/* gs://www.example.com/
# 設定網站配置
gcloud storage buckets update gs://www.example.com \
--web-main-page-suffix=index.html \
--web-error-page=404.html
# 設定公開存取
gcloud storage buckets add-iam-policy-binding gs://www.example.com \
--member=allUsers --role=roles/storage.objectViewer

自訂網域的 TLS 在 HTTPS 負載平衡器終止;Cloud CDN 命中時直接從邊緣回應,未命中才向 Bucket 取回物件並填入快取。公開的是靜態物件讀取權,不應連帶公開 Bucket 的管理權限。
Cloud Run 部署流程
- 撰寫 Dockerfile
- 建立 Artifact Registry 儲存庫:
gcloud artifacts repositories create REPO --repository-format=docker --location=REGION - 使用 Cloud Build 建構映像:
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT/REPO/app - 部署到 Cloud Run:
gcloud run deploy app --image REGION-docker.pkg.dev/PROJECT/REPO/app

新映像會建立新的 Revision,不會覆寫舊版。先用零流量 Revision 做 Smoke Test,再逐步增加 v2 流量;指標惡化時只需把流量切回 v1,不必在事故當下重新建置映像。
實作重點
- 純靜態網站就用 Cloud Storage + Cloud CDN,成本最低
- 有伺服器端邏輯要跑就上 Cloud Run,什麼語言的容器都吃得下
- Firebase Hosting 適合搭配 Firebase 全家桶(Auth、Firestore)
- 記得設定 HTTPS,Cloud Run 和 Firebase Hosting 預設提供 SSL
Skill Badge 指引
Lab 連結:Build a Website on Google Cloud — 完成此 lab 可獲得 Skill Badge
延伸學習
- 本系列下一課:App Engine 三種部署方式
- 無伺服器進階:Cloud Run 無伺服器開發
Study Jam:雲端基礎實作 — 4/10 完成
查看系列全覽 →