# 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` 文件,根据需要调整配置: ```bash # 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/` 目录: ```bash # 示例 cp sql/fad_watch.sql sql/ cp sql/ry_face.sql sql/ ``` ### 3. 启动服务 #### 3.1 构建并启动所有服务 ```bash # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f ``` #### 3.2 查看特定服务日志 ```bash # 查看后端日志 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` 文件: ```bash FRONTEND_PORT=8080 # 修改为你想要的端口 ``` ### 2. 如需外部访问其他服务 编辑 `docker-compose.yml`,在对应服务下添加 `ports` 配置: ```yaml mysql: # ... 其他配置 ports: - "3306:3306" # 添加端口映射 ``` ### 3. 调整Java后端内存 编辑 `ruoyi-admin/Dockerfile`: ```dockerfile ENV JAVA_OPTS="-Xms1g -Xmx2g -Djava.security.egd=file:/dev/./urandom" ``` 或在 `docker-compose.yml` 中添加环境变量: ```yaml backend: environment: JAVA_OPTS: "-Xms1g -Xmx2g" ``` ### 4. MinIO配置 本系统使用**外部已部署的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. 查看服务健康状态 ```bash docker-compose ps ``` 健康的服务会显示 `healthy` 状态。 ### 2. 查看容器日志 ```bash # 查看所有服务日志 docker-compose logs # 查看特定服务的最新日志 docker-compose logs --tail=100 -f backend ``` ### 3. 进入容器调试 ```bash # 进入后端容器 docker exec -it rtsp-backend sh # 进入前端容器 docker exec -it rtsp-frontend sh # 进入Python服务容器 docker exec -it rtsp-python-service bash ``` ### 4. 重启服务 ```bash # 重启单个服务 docker-compose restart backend # 重启所有服务 docker-compose restart ``` ### 5. 完全重建服务 ```bash # 停止并删除所有容器 docker-compose down # 重新构建并启动 docker-compose up -d --build ``` ### 6. 清理数据重新开始 ```bash # 停止并删除所有容器和数据卷 docker-compose down -v # 重新启动 docker-compose up -d ``` ## 📦 数据持久化 以下数据会持久化存储: - `mysql-data`: MySQL数据库数据 - `redis-data`: Redis持久化数据 - `backend-logs`: 后端服务日志 - `backend-upload`: 后端上传文件 **注意**:MinIO数据存储在外部服务器,不在本地 ## 🔒 安全建议 1. **修改默认密码**:部署到生产环境前,请修改 `.env` 中的所有默认密码 2. **限制网络访问**:使用防火墙规则限制对前端端口的访问 3. **HTTPS配置**:在生产环境中,建议配置HTTPS(可使用Nginx反向代理+Let's Encrypt) 4. **定期备份**:定期备份数据卷内容 ## 🔄 更新部署 ```bash # 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**: 1. 首次启动需要下载Ultralytics YOLOv8依赖,这可能需要一些时间 2. 确保`python-inference-service/models/best.pt`文件存在 3. 使用 `docker-compose logs python-service` 查看进度 ### Q4: 如何更换MinIO服务 **A**: 修改 `ruoyi-admin/src/main/resources/application.yml` 中的MinIO配置: ```yaml minio: endpoint: http://your-minio-server:port access-key: your-access-key secret-key: your-secret-key bucket: your-bucket ``` ## 📞 支持 如有问题,请查看: - 项目GitHub Issues - 查看服务日志进行调试 - 检查环境变量配置是否正确 ## �� 许可证 [根据项目实际许可证填写]