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模式 |