Files
TODO_list_system/DEPLOYMENT.md
2025-09-03 18:08:40 +08:00

6.5 KiB
Raw Permalink Blame History

TODO管理系統 - 生產環境部署指南

📋 概述

本文件提供TODO管理系統的完整生產環境部署指南包含所有必要的配置和步驟。

🏗️ 系統架構

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   前端 (Next.js) │    │  後端 (Flask)   │    │   MySQL DB      │
│   Port: 12012   │◄───┤   Port: 12011   │◄───┤ theaken.com     │
│   Docker容器     │    │   Docker容器     │    │   Port: 33306   │
└─────────────────┘    └─────────────────┘    └─────────────────┘
                               │
                               ▼
                       ┌─────────────────┐
                       │   LDAP/AD       │
                       │  panjit.com.tw  │
                       │   Port: 389     │
                       └─────────────────┘

🚀 快速部署

Windows 環境

# 1. 克隆專案(如果尚未克隆)
git clone <repository-url>
cd TODOLIST

# 2. 執行部署腳本
deploy.bat

Linux/Mac 環境

# 1. 克隆專案(如果尚未克隆)
git clone <repository-url>
cd TODOLIST

# 2. 設置執行權限並執行部署腳本
chmod +x deploy.sh
./deploy.sh

📁 部署文件結構

TODOLIST/
├── backend/                 # 後端代碼
│   ├── Dockerfile          # 後端Docker構建文件
│   ├── requirements.txt    # Python依賴
│   └── ...
├── frontend/               # 前端代碼
│   ├── Dockerfile         # 前端Docker構建文件
│   ├── package.json       # Node.js依賴
│   └── ...
├── docker-compose.prod.yml # 生產環境Docker Compose配置
├── .env.production        # 生產環境變量配置
├── deploy.bat            # Windows部署腳本
├── deploy.sh             # Linux/Mac部署腳本
└── DEPLOYMENT.md         # 部署說明文件

🔧 環境配置

生產環境變量 (.env.production)

本系統使用以下生產環境配置:

🗄️ 資料庫配置

  • MySQL主機: mysql.theaken.com:33306
  • 資料庫: db_A060
  • 用戶: A060

🔐 LDAP認證配置

  • LDAP服務器: panjit.com.tw:389
  • 搜索基礎: OU=PANJIT,DC=panjit,DC=com,DC=tw
  • 認證方式: Active Directory集成

📧 郵件服務配置

  • SMTP服務器: mail.panjit.com.tw:25
  • 發送者: todo-system@panjit.com.tw

🌐 服務端口

  • 前端: 12012
  • 後端API: 12011

🐳 Docker配置

服務組成

  1. todo-backend-prod: Flask後端容器

    • 端口映射: 12011:12011
    • 健康檢查: /api/health
    • 自動重啟: unless-stopped
  2. todo-frontend-prod: Next.js前端容器

    • 端口映射: 12012:12012
    • 健康檢查: 根路徑檢查
    • 自動重啟: unless-stopped

網路配置

  • 使用自定義橋接網路 todolist-network
  • 容器間可通過服務名稱通信
  • 外部訪問通過端口映射

🔍 手動部署步驟

如果需要手動部署,請按以下步驟執行:

1. 停止現有服務

# 停止並移除現有容器
docker stop todo-backend-prod todo-frontend-prod
docker rm todo-backend-prod todo-frontend-prod

2. 建置Docker鏡像

# 建置後端鏡像
docker build -t todolist-backend:latest ./backend

# 建置前端鏡像
docker build -t todo-frontend:latest \
  --build-arg NEXT_PUBLIC_API_URL=http://localhost:12011 \
  ./frontend

3. 啟動服務

# 使用Docker Compose啟動
docker-compose -f docker-compose.prod.yml up -d

4. 驗證部署

# 檢查容器狀態
docker ps

# 檢查服務健康
curl http://localhost:12011/api/health
curl http://localhost:12012

🧪 測試與驗證

API測試

# 健康檢查
curl http://localhost:12011/api/health

# CORS測試
curl -H "Origin: http://localhost:12012" \
     -H "Access-Control-Request-Method: POST" \
     -H "Access-Control-Request-Headers: Content-Type,Authorization" \
     -X OPTIONS http://localhost:12011/api/auth/login

🛠️ 維護指令

日誌查看

# 查看所有服務日誌
docker-compose -f docker-compose.prod.yml logs -f

# 查看特定服務日誌
docker logs todo-backend-prod -f
docker logs todo-frontend-prod -f

服務管理

# 重啟服務
docker-compose -f docker-compose.prod.yml restart

# 停止服務
docker-compose -f docker-compose.prod.yml down

# 更新並重啟
docker-compose -f docker-compose.prod.yml down
docker-compose -f docker-compose.prod.yml up -d --build

資源監控

# 查看容器狀態
docker ps

# 查看資源使用
docker stats

# 查看容器詳情
docker inspect todo-backend-prod
docker inspect todo-frontend-prod

🚨 故障排除

常見問題

1. 容器無法啟動

# 檢查日誌
docker logs todo-backend-prod
docker logs todo-frontend-prod

# 檢查端口占用
netstat -ano | findstr :12011
netstat -ano | findstr :12012

2. 資料庫連接失敗

  • 確認網路連通性到 mysql.theaken.com:33306
  • 驗證資料庫憑證
  • 檢查防火牆設置

3. LDAP認證失敗

  • 確認網路連通性到 panjit.com.tw:389
  • 驗證LDAP服務帳號憑證
  • 檢查搜索基礎設置

4. CORS錯誤

  • 確認前後端URL配置
  • 檢查 CORS_ORIGINS 環境變量
  • 驗證前端請求標頭

健康檢查端點

  • 後端健康檢查: GET http://localhost:12011/api/health
  • 前端健康檢查: GET http://localhost:12012

🔒 安全考量

生產環境安全設置

  1. 更改默認密鑰

    • 修改 SECRET_KEYJWT_SECRET_KEY
    • 使用強密碼策略
  2. 網路安全

    • 考慮使用反向代理Nginx
    • 配置HTTPS證書
    • 限制外部訪問
  3. 監控與日誌

    • 設置日誌輪轉
    • 監控系統資源
    • 設置告警機制

📞 支援聯繫

  • 系統管理員: ymirliu@panjit.com.tw
  • 技術支援: 參考專案文檔或聯繫開發團隊

📝 版本資訊

  • 系統版本: 1.0.0
  • Docker映像:
    • Backend: todolist-backend:latest
    • Frontend: todo-frontend:latest
  • 部署日期: 自動生成

注意: 本文件包含敏感配置資訊,請妥善保管,僅限授權人員查看。