6.5 KiB
6.5 KiB
RTSP视频分析系统 Docker部署方案
📋 目录结构
rtsp-video-analysis-system/
├── .env # 环境变量配置文件
├── docker-compose.yml # Docker Compose编排文件
├── ruoyi-admin/
│ └── Dockerfile # Java后端Dockerfile
├── rtsp-vue/
│ ├── Dockerfile # 前端Dockerfile
│ └── nginx.conf # Nginx配置文件
├── python-inference-service/
│ └── Dockerfile # Python推理服务Dockerfile
└── sql/ # 数据库初始化脚本
🚀 快速开始
1. 前置要求
- Docker 20.10+
- Docker Compose 2.0+
- (可选)NVIDIA Docker Runtime(如需GPU支持)
2. 准备工作
2.1 配置环境变量
编辑 .env 文件,根据需要调整配置:
# MySQL数据库配置
MYSQL_ROOT_PASSWORD=ruoyi123
MYSQL_DATABASE=ry-vue
MYSQL_USER=ruoyi
MYSQL_PASSWORD=ruoyi123
# MinIO对象存储配置
MINIO_ROOT_USER=minio
MINIO_ROOT_PASSWORD=minio123
# 其他配置...
2.2 准备数据库初始化脚本
将数据库SQL脚本放到 sql/ 目录:
# 示例
cp sql/fad_watch.sql sql/
cp sql/ry_face.sql sql/
3. 启动服务
3.1 构建并启动所有服务
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
3.2 查看特定服务日志
# 查看后端日志
docker-compose logs -f backend
# 查看前端日志
docker-compose logs -f frontend
# 查看Python服务日志
docker-compose logs -f python-service
4. 访问服务
- 前端界面: http://localhost:10080 (或配置的FRONTEND_PORT)
- 后端API: 通过前端的
/prod-api/路径访问 - Python推理API: 通过前端的
/python-api/路径访问 - MinIO控制台: 仅容器内部访问(如需外部访问,需修改docker-compose.yml)
注意:除前端外,其他服务端口均不对外暴露,仅容器间通信使用。
🔧 服务说明
服务列表
| 服务名称 | 容器名称 | 端口(内部) | 端口(外部) | 说明 |
|---|---|---|---|---|
| mysql | rtsp-mysql | 3306 | - | MySQL数据库 |
| redis | rtsp-redis | 6379 | - | Redis缓存 |
| python-service | rtsp-python-service | 8000 | - | Python推理服务(CPU) |
| backend | rtsp-backend | 8080 | - | Java后端服务 |
| frontend | rtsp-frontend | 80 | 10080 | Vue前端服务 |
注意:
- MinIO使用外部已部署的服务(http://49.232.154.205:10900)
- Python推理服务使用CPU模式,不需要GPU
服务依赖关系
frontend
└── backend
├── mysql
├── redis
├── python-service
└── minio (外部服务)
⚙️ 高级配置
1. 修改前端暴露端口
编辑 .env 文件:
FRONTEND_PORT=8080 # 修改为你想要的端口
2. 如需外部访问其他服务
编辑 docker-compose.yml,在对应服务下添加 ports 配置:
mysql:
# ... 其他配置
ports:
- "3306:3306" # 添加端口映射
3. 调整Java后端内存
编辑 ruoyi-admin/Dockerfile:
ENV JAVA_OPTS="-Xms1g -Xmx2g -Djava.security.egd=file:/dev/./urandom"
或在 docker-compose.yml 中添加环境变量:
backend:
environment:
JAVA_OPTS: "-Xms1g -Xmx2g"
4. MinIO配置
本系统使用外部已部署的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. 查看服务健康状态
docker-compose ps
健康的服务会显示 healthy 状态。
2. 查看容器日志
# 查看所有服务日志
docker-compose logs
# 查看特定服务的最新日志
docker-compose logs --tail=100 -f backend
3. 进入容器调试
# 进入后端容器
docker exec -it rtsp-backend sh
# 进入前端容器
docker exec -it rtsp-frontend sh
# 进入Python服务容器
docker exec -it rtsp-python-service bash
4. 重启服务
# 重启单个服务
docker-compose restart backend
# 重启所有服务
docker-compose restart
5. 完全重建服务
# 停止并删除所有容器
docker-compose down
# 重新构建并启动
docker-compose up -d --build
6. 清理数据重新开始
# 停止并删除所有容器和数据卷
docker-compose down -v
# 重新启动
docker-compose up -d
📦 数据持久化
以下数据会持久化存储:
mysql-data: MySQL数据库数据redis-data: Redis持久化数据backend-logs: 后端服务日志backend-upload: 后端上传文件
注意:MinIO数据存储在外部服务器,不在本地
🔒 安全建议
- 修改默认密码:部署到生产环境前,请修改
.env中的所有默认密码 - 限制网络访问:使用防火墙规则限制对前端端口的访问
- HTTPS配置:在生产环境中,建议配置HTTPS(可使用Nginx反向代理+Let's Encrypt)
- 定期备份:定期备份数据卷内容
🔄 更新部署
# 1. 拉取最新代码
git pull
# 2. 重新构建镜像
docker-compose build
# 3. 重启服务
docker-compose up -d
📝 常见问题
Q1: 后端启动失败,提示连接不到数据库
A: 检查MySQL是否已完全启动。使用 docker-compose logs mysql 查看MySQL日志。
Q2: 前端无法连接后端API
A: 确认nginx配置中的后端地址是否正确,应该使用容器名 rtsp-backend 而不是 localhost。
Q3: Python推理服务启动慢
A:
- 首次启动需要下载Ultralytics YOLOv8依赖,这可能需要一些时间
- 确保
python-inference-service/models/best.pt文件存在 - 使用
docker-compose logs python-service查看进度
Q4: 如何更换MinIO服务
A: 修改 ruoyi-admin/src/main/resources/application.yml 中的MinIO配置:
minio:
endpoint: http://your-minio-server:port
access-key: your-access-key
secret-key: your-secret-key
bucket: your-bucket
📞 支持
如有问题,请查看:
- 项目GitHub Issues
- 查看服务日志进行调试
- 检查环境变量配置是否正确
<EFBFBD><EFBFBD> 许可证
[根据项目实际许可证填写]