Some checks failed
CD Pipeline / deploy (push) Failing after 59s
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml) - 部署模式: rsync Python 檔案至 188 → docker restart (volume mount) - Dockerfile/requirements 變動時自動重建 Docker image - 部署通知: Telegram (開始/成功/失敗) - 健康檢查: https://mo.wooo.work/health (最多 5 次重試) - 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7.1 KiB
7.1 KiB
Momo Pro System - 部署快速指南
🚀 推薦方案對比
| 方案 | 成本/月 | 部署難度 | 維護成本 | 擴展性 | 推薦度 |
|---|---|---|---|---|---|
| Cloud Run | $10-30 | ⭐ 極易 | ⭐ 極低 | ⭐⭐⭐ 高 | ⭐⭐⭐⭐⭐ |
| Docker (本機) | $0 | ⭐⭐ 容易 | ⭐⭐ 低 | ⭐ 低 | ⭐⭐⭐⭐ |
| VM (Compute Engine) | $32 | ⭐⭐⭐ 中等 | ⭐⭐⭐ 中 | ⭐⭐ 中 | ⭐⭐⭐ |
| GKE (Kubernetes) | $123+ | ⭐⭐⭐⭐⭐ 困難 | ⭐⭐⭐⭐ 高 | ⭐⭐⭐ 高 | ⭐⭐ |
🎯 方案一:Cloud Run(最推薦)
特點:
- ✅ 完全託管,自動擴展
- ✅ 按使用付費,沒流量不收費
- ✅ 自動 HTTPS
- ✅ 5 分鐘部署完成
快速部署
# 一鍵部署
./deploy_scripts/deploy_cloudrun.sh
或手動部署:
# 登入 GCP
gcloud auth login
# 設定專案
gcloud config set project YOUR_PROJECT_ID
# 部署(從原始碼自動建立)
gcloud run deploy momo-pro-system \
--source . \
--region=asia-east1 \
--allow-unauthenticated \
--port=5000
詳細文檔: deploy_docker_guide.md
🏠 方案二:本機 Docker 測試
適合:
- 本機開發測試
- 不需要公開訪問
- 學習 Docker
快速啟動
# 一鍵測試
./deploy_scripts/test_docker_local.sh
或手動啟動:
# 啟動容器
docker-compose up -d
# 訪問
open http://localhost
# 查看日誌
docker-compose logs -f
# 停止
docker-compose down
🖥️ 方案三:VM 部署(傳統方式)
適合:
- 需要完全控制
- 已有 VM 資源
- 自定義環境需求
Docker 方式(推薦)
# 1. 建立 VM
gcloud compute instances create momo-server \
--zone=asia-east1-a \
--machine-type=e2-medium \
--image-family=cos-stable \
--image-project=cos-cloud
# 2. 上傳程式碼
gcloud compute scp --recurse . momo-server:~/momo_pro_system --zone=asia-east1-a
# 3. SSH 到 VM
gcloud compute ssh momo-server --zone=asia-east1-a
# 4. 在 VM 上啟動
cd ~/momo_pro_system
docker-compose up -d
傳統方式
# 使用傳統腳本部署
# 在 VM 上執行
./deploy_scripts/setup_vm.sh
./deploy_scripts/setup_service.sh
./deploy_scripts/setup_nginx.sh
詳細文檔: deploy_gcp_guide.md
📁 檔案結構
momo_pro_system/
├── Dockerfile # Docker 映像定義
├── docker-compose.yml # Docker Compose 配置
├── nginx.conf # Nginx 配置
├── .dockerignore # Docker 忽略檔案
├── DEPLOY_README.md # 本檔案
├── deploy_docker_guide.md # Docker 詳細指南
├── deploy_gcp_guide.md # 傳統 VM 詳細指南
└── deploy_scripts/
├── deploy_cloudrun.sh # Cloud Run 一鍵部署 ⭐
├── test_docker_local.sh # 本機 Docker 測試 ⭐
├── setup_vm.sh # VM 環境設定
├── setup_service.sh # 系統服務設定
├── setup_nginx.sh # Nginx 設定
└── backup.sh # 備份腳本
🔧 環境變數設定
建立 .env 檔案
# Flask 設定
FLASK_ENV=production
SECRET_KEY=your-secret-key-here
# Email 設定
EMAIL_USER=your-email@gmail.com
EMAIL_PASSWORD=your-app-password
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
# 資料庫
DATABASE_PATH=data/momo_database.db
Gmail App Password 設定
- 開啟 Google 帳戶設定
- 安全性 → 兩步驟驗證
- 應用程式密碼 → 選擇"郵件"
- 複製 16 位密碼到
EMAIL_PASSWORD
📊 監控和維護
Cloud Run
# 查看日誌
gcloud logging read "resource.type=cloud_run_revision" --limit=50
# 查看指標
gcloud run services describe momo-pro-system --region=asia-east1
# 更新服務
./deploy_scripts/deploy_cloudrun.sh
Docker (本機/VM)
# 查看日誌
docker-compose logs -f
# 查看狀態
docker-compose ps
# 重啟服務
docker-compose restart
# 更新服務
docker-compose down
docker-compose pull
docker-compose up -d
💾 備份策略
自動備份(推薦)
# 設定每日自動備份到 Cloud Storage
# 1. 建立 bucket
gsutil mb -l asia-east1 gs://momo-backups
# 2. 設定 cron job
0 2 * * * cd /app && ./deploy_scripts/backup.sh && gsutil cp backups/*.zip gs://momo-backups/
手動備份
# 執行備份腳本
./deploy_scripts/backup.sh
# 備份檔案位置
ls -lh ~/backups/
🆘 故障排除
問題 1:容器無法啟動
# 查看詳細日誌
docker-compose logs momo-app
# 檢查配置
docker-compose config
問題 2:無法連接資料庫
# 檢查資料庫檔案
ls -lh data/momo_database.db
# 測試資料庫連接
docker exec momo-pro-system python -c "import sqlite3; print(sqlite3.connect('/app/data/momo_database.db'))"
問題 3:Email 無法發送
# 檢查環境變數
docker exec momo-pro-system env | grep EMAIL
# 測試 SMTP 連接
docker exec momo-pro-system python -c "
import smtplib
import os
smtp = smtplib.SMTP(os.getenv('SMTP_SERVER'), int(os.getenv('SMTP_PORT')))
smtp.starttls()
print('SMTP 連接成功')
"
問題 4:Cloud Run 超時
# 增加超時時間
gcloud run services update momo-pro-system \
--timeout=900 \
--region=asia-east1
💰 成本優化
Cloud Run 優化
# 設定最小實例為 0(沒流量時不收費)
gcloud run services update momo-pro-system \
--min-instances=0 \
--region=asia-east1
# 減少記憶體配置
gcloud run services update momo-pro-system \
--memory=1Gi \
--region=asia-east1
VM 優化
# 使用 Preemptible VM(可節省 80% 成本)
gcloud compute instances create momo-server \
--preemptible \
--machine-type=e2-small
# 使用 Spot VM(新版 Preemptible)
gcloud compute instances create momo-server \
--provisioning-model=SPOT \
--machine-type=e2-small
🔒 安全性建議
- 使用 Secret Manager 儲存敏感資訊
- 啟用 HTTPS(Cloud Run 自動,VM 需設定)
- 限制訪問權限(使用 IAM)
- 定期更新依賴
- 啟用日誌監控
📞 支援
- Docker 詳細指南: deploy_docker_guide.md
- 傳統 VM 指南: deploy_gcp_guide.md
- GCP 文檔: https://cloud.google.com/docs
- Docker 文檔: https://docs.docker.com
🎯 快速決策指南
選擇 Cloud Run,如果:
- ✅ 想要最簡單的部署
- ✅ 流量不穩定(自動擴展)
- ✅ 預算有限(按用量付費)
選擇本機 Docker,如果:
- ✅ 只是開發測試
- ✅ 不需要公開訪問
- ✅ 想學習 Docker
選擇 VM,如果:
- ✅ 需要完全控制權
- ✅ 有特殊環境需求
- ✅ 已有 VM 資源
不要選擇 GKE,除非:
- ✅ 需要複雜的微服務架構
- ✅ 有專業 DevOps 團隊
- ✅ 預算充足
推薦:使用 Cloud Run 開始,需要時再遷移到其他方案。