密钥写死,处理报错
This commit is contained in:
194
docs/development/自动化部署指南.md
Normal file
194
docs/development/自动化部署指南.md
Normal file
@@ -0,0 +1,194 @@
|
||||
# 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/内存限制
|
||||
|
||||
## 总结
|
||||
|
||||
通过自动化部署系统,您可以:
|
||||
- 实现代码到生产的快速部署
|
||||
- 确保部署的一致性和可靠性
|
||||
- 集成完整的监控和日志管理
|
||||
- 支持多种部署环境和方式
|
||||
Reference in New Issue
Block a user