Files
aitsc/docs/development/自动化部署指南.md

195 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

2025-08-18 22:39:34 +08:00
# Flask 提示词大师 - 自动化部署指南
## 概述
本文档介绍Flask提示词大师项目的自动化部署流程包括CI/CD流水线、Docker部署、Kubernetes部署等。
## CI/CD流水线
### GitHub Actions配置
配置文件: `.github/workflows/ci-cd.yml`
#### 主要阶段:
1. **代码质量检查** - Flake8, Black, MyPy
2. **单元测试** - pytest + 覆盖率
3. **集成测试** - 完整功能测试
4. **构建镜像** - Docker镜像构建
5. **部署** - 测试/生产环境部署
### 环境变量配置
在GitHub Secrets中配置:
```bash
DOCKER_USERNAME=your-docker-username
DOCKER_PASSWORD=your-docker-password
SSH_PRIVATE_KEY=your-ssh-key
SSH_HOST=your-server-host
```
## Docker部署
### Docker Compose配置
文件: `docker-compose.prod.yml`
```bash
# 启动服务
docker-compose -f docker-compose.prod.yml up -d
# 查看状态
docker-compose -f docker-compose.prod.yml ps
# 查看日志
docker-compose -f docker-compose.prod.yml logs -f app
```
### 环境变量
创建`.env`文件:
```bash
MYSQL_ROOT_PASSWORD=your-password
MYSQL_DATABASE=flask_prompt_master
SECRET_KEY=your-secret-key
LLM_API_KEY=your-api-key
```
## Kubernetes部署
### 部署步骤
```bash
# 创建命名空间
kubectl create namespace flask-prompt-master
# 创建密钥
kubectl create secret generic flask-secrets \
--from-literal=secret-key="your-secret" \
--from-literal=llm-api-key="your-api-key" \
-n flask-prompt-master
# 部署应用
kubectl apply -f k8s/deployment.yaml -n flask-prompt-master
# 部署监控
kubectl apply -f k8s/monitoring.yaml -n flask-prompt-master
```
## 传统服务器部署
### 自动化脚本
脚本: `scripts/deploy.sh`
```bash
# 部署到测试环境
./scripts/deploy.sh -e test -s test.example.com -u deploy -k ~/.ssh/id_rsa
# 部署到生产环境
./scripts/deploy.sh -e production -s prod.example.com -u deploy -k ~/.ssh/id_rsa
```
### 部署流程
1. **准备部署包** - 清理文件,创建压缩包
2. **上传服务器** - SCP上传执行远程脚本
3. **服务管理** - 停止旧服务,安装新版本
4. **验证部署** - 健康检查,功能测试
## 监控系统集成
### CI/CD中的监控
监控系统在应用部署后自动部署:
- 部署监控脚本
- 配置定时任务
- 启动监控服务
### Docker中的监控
监控服务作为独立容器运行:
```yaml
monitor:
image: flask-prompt-master-monitor:latest
environment:
- APP_URL=http://app:5000
- MONITOR_INTERVAL=30
```
### Kubernetes中的监控
通过Deployment和CronJob管理:
```yaml
# 监控服务
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-monitor
# 日志维护
apiVersion: batch/v1
kind: CronJob
metadata:
name: log-maintenance
spec:
schedule: "0 2 * * *"
```
## 部署验证
### 健康检查
```bash
# 应用健康检查
curl -f http://your-server/health
# 监控服务检查
curl -f http://your-server:8080/health
```
### 功能测试
```bash
# 测试API
curl -X POST http://your-server/api/wx/templates/intent \
-H "Content-Type: application/json" \
-d '{"text": "测试文本"}'
```
## 故障排除
### 常见问题
1. **部署失败** - 检查SSH连接和权限
2. **服务启动失败** - 检查环境变量配置
3. **数据库连接失败** - 检查数据库服务状态
### 日志查看
```bash
# Docker日志
docker-compose logs -f app
# Kubernetes日志
kubectl logs -f deployment/flask-prompt-master
# 系统日志
journalctl -u flask-prompt-master -f
```
## 最佳实践
1. **蓝绿部署** - 减少停机时间
2. **健康检查** - 确保服务可用性
3. **监控告警** - 及时发现问题
4. **安全配置** - 使用密钥管理
5. **资源限制** - 设置CPU/内存限制
## 总结
通过自动化部署系统,您可以:
- 实现代码到生产的快速部署
- 确保部署的一致性和可靠性
- 集成完整的监控和日志管理
- 支持多种部署环境和方式