Files
ewoooc/DEPLOY_README.md
ogt 1b4f3a7bbe
Some checks failed
CD Pipeline / deploy (push) Failing after 59s
feat: EwoooC 初始化 — 完整專案推版至 Gitea
- 建立 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>
2026-04-19 01:21:13 +08:00

360 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Momo Pro System - 部署快速指南
## 🚀 推薦方案對比
| 方案 | 成本/月 | 部署難度 | 維護成本 | 擴展性 | 推薦度 |
|-----|--------|---------|---------|--------|-------|
| **Cloud Run** | $10-30 | ⭐ 極易 | ⭐ 極低 | ⭐⭐⭐ 高 | ⭐⭐⭐⭐⭐ |
| Docker (本機) | $0 | ⭐⭐ 容易 | ⭐⭐ 低 | ⭐ 低 | ⭐⭐⭐⭐ |
| VM (Compute Engine) | $32 | ⭐⭐⭐ 中等 | ⭐⭐⭐ 中 | ⭐⭐ 中 | ⭐⭐⭐ |
| GKE (Kubernetes) | $123+ | ⭐⭐⭐⭐⭐ 困難 | ⭐⭐⭐⭐ 高 | ⭐⭐⭐ 高 | ⭐⭐ |
---
## 🎯 方案一Cloud Run最推薦
**特點:**
- ✅ 完全託管,自動擴展
- ✅ 按使用付費,沒流量不收費
- ✅ 自動 HTTPS
- ✅ 5 分鐘部署完成
### 快速部署
```bash
# 一鍵部署
./deploy_scripts/deploy_cloudrun.sh
```
或手動部署:
```bash
# 登入 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](deploy_docker_guide.md)
---
## 🏠 方案二:本機 Docker 測試
**適合:**
- 本機開發測試
- 不需要公開訪問
- 學習 Docker
### 快速啟動
```bash
# 一鍵測試
./deploy_scripts/test_docker_local.sh
```
或手動啟動:
```bash
# 啟動容器
docker-compose up -d
# 訪問
open http://localhost
# 查看日誌
docker-compose logs -f
# 停止
docker-compose down
```
---
## 🖥️ 方案三VM 部署(傳統方式)
**適合:**
- 需要完全控制
- 已有 VM 資源
- 自定義環境需求
### Docker 方式(推薦)
```bash
# 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
```
### 傳統方式
```bash
# 使用傳統腳本部署
# 在 VM 上執行
./deploy_scripts/setup_vm.sh
./deploy_scripts/setup_service.sh
./deploy_scripts/setup_nginx.sh
```
**詳細文檔:** [deploy_gcp_guide.md](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 檔案
```bash
# 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 設定
1. 開啟 Google 帳戶設定
2. 安全性 → 兩步驟驗證
3. 應用程式密碼 → 選擇"郵件"
4. 複製 16 位密碼到 `EMAIL_PASSWORD`
---
## 📊 監控和維護
### Cloud Run
```bash
# 查看日誌
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)
```bash
# 查看日誌
docker-compose logs -f
# 查看狀態
docker-compose ps
# 重啟服務
docker-compose restart
# 更新服務
docker-compose down
docker-compose pull
docker-compose up -d
```
---
## 💾 備份策略
### 自動備份(推薦)
```bash
# 設定每日自動備份到 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/
```
### 手動備份
```bash
# 執行備份腳本
./deploy_scripts/backup.sh
# 備份檔案位置
ls -lh ~/backups/
```
---
## 🆘 故障排除
### 問題 1容器無法啟動
```bash
# 查看詳細日誌
docker-compose logs momo-app
# 檢查配置
docker-compose config
```
### 問題 2無法連接資料庫
```bash
# 檢查資料庫檔案
ls -lh data/momo_database.db
# 測試資料庫連接
docker exec momo-pro-system python -c "import sqlite3; print(sqlite3.connect('/app/data/momo_database.db'))"
```
### 問題 3Email 無法發送
```bash
# 檢查環境變數
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 連接成功')
"
```
### 問題 4Cloud Run 超時
```bash
# 增加超時時間
gcloud run services update momo-pro-system \
--timeout=900 \
--region=asia-east1
```
---
## 💰 成本優化
### Cloud Run 優化
```bash
# 設定最小實例為 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 優化
```bash
# 使用 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
```
---
## 🔒 安全性建議
1. **使用 Secret Manager** 儲存敏感資訊
2. **啟用 HTTPS**Cloud Run 自動VM 需設定)
3. **限制訪問權限**(使用 IAM
4. **定期更新依賴**
5. **啟用日誌監控**
---
## 📞 支援
- **Docker 詳細指南:** [deploy_docker_guide.md](deploy_docker_guide.md)
- **傳統 VM 指南:** [deploy_gcp_guide.md](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 開始,需要時再遷移到其他方案。**