Files
rtsp-video-analysis-system/DEPLOYMENT-NOTES.md
2025-09-30 14:23:33 +08:00

329 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📌 部署配置说明
## 重要配置
### 1. MinIO配置使用外部服务
本系统使用**外部已部署的MinIO服务**不在Docker中部署MinIO。
**配置位置**: `ruoyi-admin/src/main/resources/application.yml`
```yaml
minio:
enabled: true
endpoint: http://49.232.154.205:10900
access-key: 4EsLD9g9OM09DT0HaBKj
secret-key: 05SFC5fleqTnaLRYBrxHiphMFYbGX5nYicj0WCHA
bucket: rtsp
```
**如需更换MinIO服务器**
1. 编辑上述配置文件
2. 重新构建后端镜像:`docker-compose build backend`
3. 重启服务:`docker-compose up -d`
### 2. Python推理服务CPU模式
本系统**不使用GPU**Python推理服务运行在CPU模式。
**配置特点**
- ✅ 无需NVIDIA Docker Runtime
- ✅ 无需GPU驱动
- ✅ 适合CPU服务器部署
- ⚠️ 推理速度比GPU慢
**如需提升性能**
1. 使用更小的YOLOv8模型如yolov8n.pt
2. 减小输入图像尺寸
3. 调整置信度阈值
### 3. 服务端口配置
**对外暴露端口**
- 前端10080可在.env中修改`FRONTEND_PORT`
**内部端口**(不对外暴露):
- 后端8080
- Python服务8000
- MySQL3306
- Redis6379
## Docker Compose配置要点
### 服务列表
```yaml
services:
mysql # MySQL数据库
redis # Redis缓存
python-service # Python推理服务CPU
backend # Java后端
frontend # Vue前端唯一对外暴露
```
**注意**没有MinIO服务使用外部MinIO。
### 服务依赖关系
```
frontend 依赖 backend (健康检查)
backend 依赖 mysql, redis (健康检查) + python-service (启动)
```
### 环境变量(.env
```bash
# 数据库
MYSQL_HOST=rtsp-mysql
MYSQL_PORT=3306
MYSQL_PASSWORD=ruoyi123
# Redis
REDIS_HOST=rtsp-redis
REDIS_PORT=6379
# 后端
BACKEND_HOST=rtsp-backend
BACKEND_PORT=8080
# 前端(对外端口)
FRONTEND_PORT=10080
# Python服务
PYTHON_SERVICE_HOST=rtsp-python-service
PYTHON_SERVICE_PORT=8000
```
**不包含MinIO配置**在application.yml中
## 网络架构
### 内部网络rtsp-network
所有服务运行在同一个Docker网络中
- 容器间通过容器名通信
- 外部只能访问前端10080端口
- 安全性高
### 对外访问
```
浏览器 → 前端:10080 → Nginx → 后端:8080
→ Python服务:8000
后端 → MySQL:3306
→ Redis:6379
→ MinIO:49.232.154.205:10900 (外部)
```
## YOLOv8模型配置
### 模型要求
- **模型格式**: PyTorch (.pt)
- **训练框架**: Ultralytics YOLOv8
- **模型位置**: `python-inference-service/models/best.pt`
- **类别文件**: `python-inference-service/models/classes.txt`(可选)
### 模型配置
**models.json**:
```json
[
{
"name": "yolov8_detector",
"path": "models/yolov8_model.py",
"size": [640, 640]
}
]
```
### 性能调优CPU模式
编辑 `yolov8_model.py`
```python
# 降低置信度阈值(检测更多目标)
self.conf_threshold = 0.25
# 使用更小的输入尺寸(提升速度)
self.img_size = 320 # 或 480
# 建议使用 yolov8n.pt最快的模型
```
## 数据持久化
### Docker卷
```yaml
volumes:
mysql-data # MySQL数据
redis-data # Redis数据
backend-logs # 后端日志
backend-upload # 上传文件
```
**注意**MinIO数据在外部服务器不在本地。
### 数据备份
```bash
# 备份MySQL
docker exec rtsp-mysql mysqldump -u root -pruoyi123 ry-vue > backup.sql
# 备份Redis
docker exec rtsp-redis redis-cli SAVE
docker cp rtsp-redis:/data/dump.rdb ./redis-backup.rdb
```
## 部署检查清单
### 部署前检查
- [ ] YOLOv8模型文件best.pt已放置
- [ ] 类别文件classes.txt已创建可选
- [ ] .env配置已检查
- [ ] MinIO外部服务可访问
- [ ] Docker和Docker Compose已安装
- [ ] 端口10080未被占用
### 部署后检查
- [ ] 所有容器运行正常:`docker-compose ps`
- [ ] 前端可访问http://localhost:10080
- [ ] 后端健康检查通过
- [ ] Python服务加载模型成功
- [ ] MySQL连接正常
- [ ] Redis连接正常
- [ ] MinIO外部服务连接正常
## 常见问题
### Q1: MinIO连接失败
**检查**
1. 外部MinIO服务是否可访问
2. application.yml中的配置是否正确
3. 网络是否畅通
```bash
# 测试连接
curl http://49.232.154.205:10900/minio/health/live
```
### Q2: Python推理慢
**原因**CPU模式比GPU慢
**优化**
1. 使用yolov8n.pt最小模型
2. 减小输入尺寸320或480
3. 提高置信度阈值(减少检测框)
### Q3: 容器启动失败
**排查步骤**
```bash
# 查看日志
docker-compose logs [服务名]
# 检查端口占用
netstat -an | grep 10080
# 检查资源
docker stats
```
### Q4: 模型加载失败
**检查**
1. best.pt文件是否存在
2. 文件是否是YOLOv8格式
3. Python依赖是否安装完整
```bash
# 进入容器检查
docker exec -it rtsp-python-service bash
ls -lh /app/models/
```
## 安全建议
1. **修改默认密码**
- MySQL: ruoyi123
- MinIO密钥在application.yml中
2. **网络隔离**
- 只暴露必要端口10080
- 使用防火墙限制访问
3. **MinIO安全**
- 使用HTTPS连接
- 定期更新密钥
- 限制bucket访问权限
4. **定期备份**
- MySQL数据
- Redis数据
- 应用日志
## 维护操作
### 更新服务
```bash
# 停止服务
docker-compose down
# 更新代码
git pull
# 重新构建
docker-compose build
# 启动服务
docker-compose up -d
```
### 查看日志
```bash
# 所有服务
docker-compose logs -f
# 特定服务
docker-compose logs -f backend
docker-compose logs -f python-service
```
### 清理资源
```bash
# 清理未使用的镜像
docker image prune -a
# 清理未使用的卷
docker volume prune
# 完全清理(包括数据)
docker-compose down -v
```
## 性能监控
```bash
# 查看资源使用
docker stats
# 查看容器状态
docker-compose ps
# 查看网络连接
docker network inspect rtsp-network
```
---
**最后更新**: 2025-09-30
**配置版本**: Docker Compose 3.8, YOLOv8 CPU模式