304 lines
6.5 KiB
Markdown
304 lines
6.5 KiB
Markdown
|
|
# 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><> 许可证
|
|||
|
|
|
|||
|
|
[根据项目实际许可证填写]
|