在前面兩天先用 Docker Compose 跑在本機,再試了 VM / Bare Metal。今天要把 n8n 搬到 Google Cloud Run —— 這是一個完全託管的 Serverless 平台,可以自動縮放、不必維護 VM,非常適合中小型自動化專案或 PoC 階段。
Cloud Run 是 GCP 的無伺服器(Serverless)容器平台:你只要提供一個容器映像(image),其他像是自動擴縮、負載平衡、SSL 憑證、版本控制/回滾、監控等都由平台處理好。對 n8n 來說特別友善,因為:
min-instances=1
。安裝並初始化 gcloud
指令列工具:
# 登入你的 Google 帳號
gcloud auth login
# 設定要操作的 GCP 專案 ID
gcloud config set project <PROJECT_ID>
雖然 n8n 官方有提供映像檔,但在 Cloud Run 環境中,我們需要確保 n8n 能監聽由 Cloud Run 指定的通訊埠。
# 使用官方最新的 n8n 映像檔作為基礎
FROM docker.n8n.io/n8nio/n8n:latest
# Cloud Run 會透過 $PORT 環境變數告知容器應監聽的通訊埠
# 將這個變數也設定給 N8N_PORT,讓 n8n 知道
ENV N8N_PORT=$PORT
# 宣告容器會使用的通訊埠 (此為文件性質,非強制)
EXPOSE 5678
# 啟動 n8n。n8n 會自動讀取 N8N_PORT 環境變數
CMD ["n8n"]
使用 Cloud Build 建置 Docker 映像檔,並將其推送到 Google Container Registry (gcr.io)。
#tag 指定映像檔的名稱與位置
gcloud builds submit --tag gcr.io/<PROJECT_ID>/n8n
gcloud run deploy n8n \
--image gcr.io/<PROJECT_ID>/n8n \ # 指定剛剛推送的映像檔
--platform managed \ # 使用全託管的 Cloud Run 平台
--region asia-east1 \ # 部署到台灣的 GCP 資料中心
--allow-unauthenticated # 允許未經認證的公開存取
幾分鐘後,你就會得到一個公開的 URL,例如:https://n8n-xxxxxx-uc.a.run.app
打開這個網址,就能看到如同我們在 Docker Compose 中所看到的 n8n UI。
延伸設定
常見錯誤排查
到這裡,已經能在 Cloud Run 上快速部署 n8n!接下來會帶大家把 Cloud SQL(Postgres, Private IP)串起來,讓資料長期保存,更貼近正式環境的需求。