Files
ewoooc/docs/DEPLOYMENT_GUIDE.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

343 lines
8.3 KiB
Markdown
Raw Permalink 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 部署指南
## 目錄
1. [環境資訊](#環境資訊)
2. [部署流程概覽](#部署流程概覽)
3. [本地開發環境](#本地開發環境)
4. [UAT 環境部署](#uat-環境部署)
5. [部署腳本說明](#部署腳本說明)
6. [常用指令](#常用指令)
7. [故障排除](#故障排除)
---
## 環境資訊
### 本地開發環境
- **路徑**: `/Users/ogt/momo_pro_system`
- **平台**: macOS (Darwin)
### UAT 伺服器
- **主機**: `192.168.0.110`
- **用戶**: `wooo`
- **路徑**: `/home/wooo/momo_pro_system`
- **存取 URL**: http://192.168.0.110:5000
### Docker 資訊
- **映像名稱**: `wooo/momo-pro-system:latest`
- **容器名稱**: `momo-pro-system`
- **暴露埠號**: 5000
---
## 部署流程概覽
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 本地開發 │ ──▶ │ Git 提交 │ ──▶ │ 部署到 UAT │
│ 修改程式碼 │ │ 版本控制 │ │ Docker 重建 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
### 標準部署步驟
1. **本地修改並測試**
2. **Git 提交變更**
```bash
git add .
git commit -m "描述變更內容"
```
3. **執行部署腳本**
```bash
./deploy_docker_uat.sh deploy
```
---
## 本地開發環境
### 專案結構
```
momo_pro_system/
├── app.py # Flask 主應用
├── auth.py # 認證模組
├── config.py # 配置檔案
├── scheduler.py # 排程器
├── requirements.txt # Python 依賴
├── Dockerfile # Docker 映像定義
├── docker-compose.yml # Docker Compose 配置
├── .dockerignore # Docker 忽略檔案
├── .env # 環境變數(不上傳)
├── .env.example # 環境變數範例
├── *.html # 前端模板
├── static/ # 靜態資源
│ └── images/ # 圖片資源
│ ├── logo.png # 原始 Logo
│ ├── logo_navbar.svg # 導航列圓形 Logo
│ └── logo_circle.svg # 圓形 Logo
├── services/ # 服務模組
├── database/ # 資料庫模組
├── utils/ # 工具模組
├── web/ # Web 模板
├── docker/ # Docker 相關配置
├── deploy_scripts/ # 部署腳本
├── docs/ # 文件
└── data/ # 資料庫檔案
```
### 本地啟動
#### 方式一:直接執行
```bash
python app.py
```
#### 方式二Docker Compose
```bash
docker-compose up -d
```
---
## UAT 環境部署
### 前置要求
1. **SSH 金鑰設定**
- 確保本地有 SSH 金鑰(`~/.ssh/id_rsa` 或 `~/.ssh/uat_key`
- 公鑰已加入 UAT 伺服器的 `~/.ssh/authorized_keys`
2. **UAT 伺服器環境**
- Docker 已安裝
- Docker Compose 已安裝(可選)
- 專案目錄已建立:`/home/wooo/momo_pro_system`
### 一鍵部署
```bash
./deploy_docker_uat.sh deploy
```
### 部署流程詳解
執行 `deploy_docker_uat.sh` 腳本會自動完成以下步驟:
#### 步驟 1/6: 同步檔案到 UAT
```bash
# 上傳 Docker 配置
scp Dockerfile wooo@192.168.0.110:/home/wooo/momo_pro_system/
scp docker-compose.yml wooo@192.168.0.110:/home/wooo/momo_pro_system/
scp .dockerignore wooo@192.168.0.110:/home/wooo/momo_pro_system/
# 上傳 Docker 目錄
scp -r docker wooo@192.168.0.110:/home/wooo/momo_pro_system/
# 上傳核心 Python 檔案
scp app.py auth.py config.py scheduler.py requirements.txt wooo@192.168.0.110:/home/wooo/momo_pro_system/
# 上傳 HTML 模板
scp *.html wooo@192.168.0.110:/home/wooo/momo_pro_system/
# 上傳模組目錄
scp -r services database utils static web wooo@192.168.0.110:/home/wooo/momo_pro_system/
```
#### 步驟 2/6: 停止現有服務
```bash
ssh wooo@192.168.0.110 "sudo systemctl stop momo 2>/dev/null || true"
ssh wooo@192.168.0.110 "docker stop momo-pro-system 2>/dev/null || true"
ssh wooo@192.168.0.110 "docker rm momo-pro-system 2>/dev/null || true"
```
#### 步驟 3/6: 建置 Docker Image
```bash
ssh wooo@192.168.0.110 "cd /home/wooo/momo_pro_system && docker build -t wooo/momo-pro-system:latest ."
```
#### 步驟 4/6: 啟動 Docker 容器
```bash
ssh wooo@192.168.0.110 "cd /home/wooo/momo_pro_system && docker run -d \
--name momo-pro-system \
-p 5000:5000 \
-v ./data:/app/data \
-v ./logs:/app/logs \
-v ./config:/app/config \
-v ./backups:/app/backups \
--env-file .env \
--restart unless-stopped \
wooo/momo-pro-system:latest"
```
#### 步驟 5/6: 等待服務啟動
等待 30 秒讓服務完全啟動
#### 步驟 6/6: 驗證部署
```bash
# 檢查容器狀態
ssh wooo@192.168.0.110 "docker ps --filter name=momo-pro-system"
# 測試健康檢查端點
ssh wooo@192.168.0.110 "curl -s http://localhost:5000/health"
# 測試首頁
ssh wooo@192.168.0.110 "curl -s -o /dev/null -w '%{http_code}' http://localhost:5000/"
```
---
## 部署腳本說明
### deploy_docker_uat.sh
主要的 UAT 部署腳本,支援以下指令:
| 指令 | 說明 |
|------|------|
| `./deploy_docker_uat.sh deploy` | 執行完整部署(預設) |
| `./deploy_docker_uat.sh status` | 檢查 UAT 容器狀態 |
| `./deploy_docker_uat.sh logs` | 查看容器日誌 |
| `./deploy_docker_uat.sh restart` | 重啟容器 |
| `./deploy_docker_uat.sh stop` | 停止容器 |
| `./deploy_docker_uat.sh help` | 顯示說明 |
### 其他部署腳本
| 腳本 | 說明 |
|------|------|
| `deploy.sh` | GCP 部署腳本(使用 gcloud |
| `sync_env.sh` | 環境同步腳本 |
| `deploy_scripts/setup_autostart.sh` | 設定 systemd 自動啟動 |
---
## 常用指令
### UAT 伺服器操作
```bash
# SSH 連線到 UAT
ssh wooo@192.168.0.110
# 查看容器狀態
ssh wooo@192.168.0.110 'docker ps'
# 查看容器日誌(即時)
ssh wooo@192.168.0.110 'docker logs -f momo-pro-system'
# 查看最近 100 行日誌
ssh wooo@192.168.0.110 'docker logs --tail 100 momo-pro-system'
# 重啟容器
ssh wooo@192.168.0.110 'docker restart momo-pro-system'
# 停止容器
ssh wooo@192.168.0.110 'docker stop momo-pro-system'
# 進入容器 shell
ssh wooo@192.168.0.110 'docker exec -it momo-pro-system /bin/bash'
```
### Docker 相關
```bash
# 查看所有映像
docker images
# 清理未使用的映像
docker image prune -f
# 查看容器資源使用
docker stats momo-pro-system
# 查看容器詳細資訊
docker inspect momo-pro-system
```
### Git 相關
```bash
# 查看變更
git status
git diff
# 提交變更
git add .
git commit -m "描述變更"
# 查看提交歷史
git log --oneline -10
```
---
## 故障排除
### 常見問題
#### 1. SSH 連線失敗
```bash
# 檢查 SSH 連線
ssh -v wooo@192.168.0.110
# 確認金鑰權限
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
```
#### 2. Docker 建置失敗
```bash
# 檢查 Docker 狀態
ssh wooo@192.168.0.110 'docker info'
# 查看建置錯誤
ssh wooo@192.168.0.110 'cd /home/wooo/momo_pro_system && docker build --no-cache -t wooo/momo-pro-system:latest .'
```
#### 3. 容器啟動失敗
```bash
# 查看容器日誌
ssh wooo@192.168.0.110 'docker logs momo-pro-system'
# 檢查 .env 檔案
ssh wooo@192.168.0.110 'cat /home/wooo/momo_pro_system/.env'
```
#### 4. 服務無法存取
```bash
# 檢查容器是否運行
ssh wooo@192.168.0.110 'docker ps -a'
# 檢查埠號綁定
ssh wooo@192.168.0.110 'docker port momo-pro-system'
# 檢查防火牆
ssh wooo@192.168.0.110 'sudo ufw status'
```
#### 5. 資料庫問題
```bash
# 進入容器檢查資料庫
ssh wooo@192.168.0.110 'docker exec -it momo-pro-system ls -la /app/data/'
```
---
## 部署紀錄
### 2026-01-18: 導航列 Logo 更新
- **變更內容**: 更新所有 HTML 頁面的導航列 Logo 為圓形 SVG 設計
- **Commit**: `037bba3`
- **部署時間**: 13:31:43
- **部署結果**: 成功
- **驗證結果**:
- 容器狀態: healthy
- 健康檢查: HTTP 200
- 首頁: HTTP 200
---
## 維護人員
- WOOO TECH 開發團隊
- 最後更新: 2026-01-18