Files
rtsp-video-analysis-system/README-DOCKER.md

304 lines
6.5 KiB
Markdown
Raw Permalink Normal View History

2025-09-30 14:23:33 +08:00
# 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
- 查看服务日志进行调试
- 检查环境变量配置是否正确
## <20><> 许可证
[根据项目实际许可证填写]