195 lines
3.8 KiB
Markdown
195 lines
3.8 KiB
Markdown
|
|
# 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/内存限制
|
|||
|
|
|
|||
|
|
## 总结
|
|||
|
|
|
|||
|
|
通过自动化部署系统,您可以:
|
|||
|
|
- 实现代码到生产的快速部署
|
|||
|
|
- 确保部署的一致性和可靠性
|
|||
|
|
- 集成完整的监控和日志管理
|
|||
|
|
- 支持多种部署环境和方式
|