6.5 KiB
6.5 KiB
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配置
服務組成
-
todo-backend-prod: Flask後端容器
- 端口映射:
12011:12011
- 健康檢查:
/api/health
- 自動重啟:
unless-stopped
- 端口映射:
-
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
🔒 安全考量
生產環境安全設置
-
更改默認密鑰:
- 修改
SECRET_KEY
和JWT_SECRET_KEY
- 使用強密碼策略
- 修改
-
網路安全:
- 考慮使用反向代理(Nginx)
- 配置HTTPS證書
- 限制外部訪問
-
監控與日誌:
- 設置日誌輪轉
- 監控系統資源
- 設置告警機制
📞 支援聯繫
- 系統管理員:
ymirliu@panjit.com.tw
- 技術支援: 參考專案文檔或聯繫開發團隊
📝 版本資訊
- 系統版本: 1.0.0
- Docker映像:
- Backend:
todolist-backend:latest
- Frontend:
todo-frontend:latest
- Backend:
- 部署日期: 自動生成
注意: 本文件包含敏感配置資訊,請妥善保管,僅限授權人員查看。