8th_fix docker
This commit is contained in:
279
DEPLOYMENT.md
Normal file
279
DEPLOYMENT.md
Normal file
@@ -0,0 +1,279 @@
|
||||
# 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 環境
|
||||
|
||||
```batch
|
||||
# 1. 克隆專案(如果尚未克隆)
|
||||
git clone <repository-url>
|
||||
cd TODOLIST
|
||||
|
||||
# 2. 執行部署腳本
|
||||
deploy.bat
|
||||
```
|
||||
|
||||
### Linux/Mac 環境
|
||||
|
||||
```bash
|
||||
# 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. 停止現有服務
|
||||
|
||||
```bash
|
||||
# 停止並移除現有容器
|
||||
docker stop todo-backend-prod todo-frontend-prod
|
||||
docker rm todo-backend-prod todo-frontend-prod
|
||||
```
|
||||
|
||||
### 2. 建置Docker鏡像
|
||||
|
||||
```bash
|
||||
# 建置後端鏡像
|
||||
docker build -t todolist-backend:latest ./backend
|
||||
|
||||
# 建置前端鏡像
|
||||
docker build -t todo-frontend:latest \
|
||||
--build-arg NEXT_PUBLIC_API_URL=http://localhost:12011 \
|
||||
./frontend
|
||||
```
|
||||
|
||||
### 3. 啟動服務
|
||||
|
||||
```bash
|
||||
# 使用Docker Compose啟動
|
||||
docker-compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 4. 驗證部署
|
||||
|
||||
```bash
|
||||
# 檢查容器狀態
|
||||
docker ps
|
||||
|
||||
# 檢查服務健康
|
||||
curl http://localhost:12011/api/health
|
||||
curl http://localhost:12012
|
||||
```
|
||||
|
||||
## 🧪 測試與驗證
|
||||
|
||||
|
||||
### API測試
|
||||
|
||||
```bash
|
||||
# 健康檢查
|
||||
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
|
||||
```
|
||||
|
||||
## 🛠️ 維護指令
|
||||
|
||||
### 日誌查看
|
||||
|
||||
```bash
|
||||
# 查看所有服務日誌
|
||||
docker-compose -f docker-compose.prod.yml logs -f
|
||||
|
||||
# 查看特定服務日誌
|
||||
docker logs todo-backend-prod -f
|
||||
docker logs todo-frontend-prod -f
|
||||
```
|
||||
|
||||
### 服務管理
|
||||
|
||||
```bash
|
||||
# 重啟服務
|
||||
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
|
||||
```
|
||||
|
||||
### 資源監控
|
||||
|
||||
```bash
|
||||
# 查看容器狀態
|
||||
docker ps
|
||||
|
||||
# 查看資源使用
|
||||
docker stats
|
||||
|
||||
# 查看容器詳情
|
||||
docker inspect todo-backend-prod
|
||||
docker inspect todo-frontend-prod
|
||||
```
|
||||
|
||||
## 🚨 故障排除
|
||||
|
||||
### 常見問題
|
||||
|
||||
#### 1. 容器無法啟動
|
||||
```bash
|
||||
# 檢查日誌
|
||||
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_KEY` 和 `JWT_SECRET_KEY`
|
||||
- 使用強密碼策略
|
||||
|
||||
2. **網路安全**:
|
||||
- 考慮使用反向代理(Nginx)
|
||||
- 配置HTTPS證書
|
||||
- 限制外部訪問
|
||||
|
||||
3. **監控與日誌**:
|
||||
- 設置日誌輪轉
|
||||
- 監控系統資源
|
||||
- 設置告警機制
|
||||
|
||||
## 📞 支援聯繫
|
||||
|
||||
- **系統管理員**: `ymirliu@panjit.com.tw`
|
||||
- **技術支援**: 參考專案文檔或聯繫開發團隊
|
||||
|
||||
## 📝 版本資訊
|
||||
|
||||
- **系統版本**: 1.0.0
|
||||
- **Docker映像**:
|
||||
- Backend: `todolist-backend:latest`
|
||||
- Frontend: `todo-frontend:latest`
|
||||
- **部署日期**: 自動生成
|
||||
|
||||
---
|
||||
|
||||
**注意**: 本文件包含敏感配置資訊,請妥善保管,僅限授權人員查看。
|
Reference in New Issue
Block a user