# 📌 部署配置说明 ## 重要配置 ### 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模式