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

6.0 KiB
Raw Permalink Blame History

📌 部署配置说明

重要配置

1. MinIO配置使用外部服务

本系统使用外部已部署的MinIO服务不在Docker中部署MinIO。

配置位置: ruoyi-admin/src/main/resources/application.yml

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

本系统不使用GPUPython推理服务运行在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配置要点

服务列表

services:
  mysql          # MySQL数据库
  redis          # Redis缓存
  python-service # Python推理服务CPU
  backend        # Java后端
  frontend       # Vue前端唯一对外暴露

注意没有MinIO服务使用外部MinIO。

服务依赖关系

frontend 依赖 backend (健康检查)
backend 依赖 mysql, redis (健康检查) + python-service (启动)

环境变量(.env

# 数据库
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:

[
  {
    "name": "yolov8_detector",
    "path": "models/yolov8_model.py",
    "size": [640, 640]
  }
]

性能调优CPU模式

编辑 yolov8_model.py

# 降低置信度阈值(检测更多目标)
self.conf_threshold = 0.25

# 使用更小的输入尺寸(提升速度)
self.img_size = 320  # 或 480

# 建议使用 yolov8n.pt最快的模型

数据持久化

Docker卷

volumes:
  mysql-data      # MySQL数据
  redis-data      # Redis数据
  backend-logs    # 后端日志
  backend-upload  # 上传文件

注意MinIO数据在外部服务器不在本地。

数据备份

# 备份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. 网络是否畅通
# 测试连接
curl http://49.232.154.205:10900/minio/health/live

Q2: Python推理慢

原因CPU模式比GPU慢

优化

  1. 使用yolov8n.pt最小模型
  2. 减小输入尺寸320或480
  3. 提高置信度阈值(减少检测框)

Q3: 容器启动失败

排查步骤

# 查看日志
docker-compose logs [服务名]

# 检查端口占用
netstat -an | grep 10080

# 检查资源
docker stats

Q4: 模型加载失败

检查

  1. best.pt文件是否存在
  2. 文件是否是YOLOv8格式
  3. Python依赖是否安装完整
# 进入容器检查
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数据
    • 应用日志

维护操作

更新服务

# 停止服务
docker-compose down

# 更新代码
git pull

# 重新构建
docker-compose build

# 启动服务
docker-compose up -d

查看日志

# 所有服务
docker-compose logs -f

# 特定服务
docker-compose logs -f backend
docker-compose logs -f python-service

清理资源

# 清理未使用的镜像
docker image prune -a

# 清理未使用的卷
docker volume prune

# 完全清理(包括数据)
docker-compose down -v

性能监控

# 查看资源使用
docker stats

# 查看容器状态
docker-compose ps

# 查看网络连接
docker network inspect rtsp-network

最后更新: 2025-09-30 配置版本: Docker Compose 3.8, YOLOv8 CPU模式