329 lines
6.0 KiB
Markdown
329 lines
6.0 KiB
Markdown
|
|
# 📌 部署配置说明
|
|||
|
|
|
|||
|
|
## 重要配置
|
|||
|
|
|
|||
|
|
### 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
|
|||
|
|
- MySQL:3306
|
|||
|
|
- Redis:6379
|
|||
|
|
|
|||
|
|
## 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模式
|