295 lines
6.4 KiB
Markdown
295 lines
6.4 KiB
Markdown
# 🎉 Docker部署方案更新总结
|
||
|
||
根据您的需求,已完成以下更新:
|
||
|
||
## ✅ 主要变更
|
||
|
||
### 1. YOLOv5 → YOLOv8 (Ultralytics)
|
||
|
||
| 变更项 | 之前 | 现在 |
|
||
|-------|------|------|
|
||
| Python包 | `yolov5>=7.0.0` | `ultralytics>=8.0.0` |
|
||
| 模型文件 | `garbage_model.py` | `yolov8_model.py` |
|
||
| 模型名称 | `garbage_detector` | `yolov8_detector` |
|
||
| API框架 | yolov5 | Ultralytics YOLO |
|
||
|
||
**优势:**
|
||
- ✨ 更高的检测精度
|
||
- ⚡ 更快的推理速度
|
||
- 🎯 更简单的API接口
|
||
- 📚 更好的官方文档支持
|
||
|
||
### 2. 前端端口调整
|
||
|
||
| 变更项 | 之前 | 现在 |
|
||
|-------|------|------|
|
||
| 对外端口 | 80 | 10080 |
|
||
| 容器内部端口 | 80 | 80 |
|
||
| 访问地址 | http://localhost | http://localhost:10080 |
|
||
|
||
**修改文件:**
|
||
- `.env` - `FRONTEND_PORT=10080`
|
||
- 所有文档中的访问地址
|
||
|
||
## 📦 新增文件
|
||
|
||
### 1. YOLOv8模型支持
|
||
- `python-inference-service/models/yolov8_model.py` - YOLOv8模型包装类
|
||
- `YOLOV8-SETUP.md` - YOLOv8配置和使用指南
|
||
- 更新 `python-inference-service/README.md` - 详细的YOLOv8文档
|
||
|
||
### 2. 配置文件更新
|
||
- 更新 `python-inference-service/requirements.txt` - ultralytics依赖
|
||
- 更新 `python-inference-service/models/models.json` - 指向yolov8_model
|
||
|
||
### 3. 文档更新
|
||
- `README-DOCKER.md` - 更新端口和YOLOv8说明
|
||
- `DOCKER-QUICK-START.md` - 更新访问地址和YOLOv8说明
|
||
- `deploy.bat` / `deploy.sh` - 更新访问地址
|
||
- `UPDATE-SUMMARY.md` - 本文档
|
||
|
||
## 🚀 使用指南
|
||
|
||
### 准备工作
|
||
|
||
1. **准备YOLOv8模型文件**
|
||
```bash
|
||
# 将训练好的模型放到指定位置
|
||
python-inference-service/models/best.pt
|
||
```
|
||
|
||
2. **创建类别文件**(可选)
|
||
```bash
|
||
# 创建 classes.txt,每行一个类别名
|
||
python-inference-service/models/classes.txt
|
||
```
|
||
|
||
3. **检查环境变量**
|
||
```bash
|
||
# 查看 .env 文件,确认端口配置
|
||
FRONTEND_PORT=10080
|
||
```
|
||
|
||
### 快速部署
|
||
|
||
#### Windows
|
||
```batch
|
||
deploy.bat
|
||
```
|
||
|
||
#### Linux/Mac
|
||
```bash
|
||
chmod +x deploy.sh
|
||
./deploy.sh
|
||
```
|
||
|
||
#### 手动部署
|
||
```bash
|
||
# 1. 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 2. 查看服务状态
|
||
docker-compose ps
|
||
|
||
# 3. 查看日志
|
||
docker-compose logs -f python-service
|
||
```
|
||
|
||
### 访问系统
|
||
|
||
部署成功后访问:
|
||
- **前端界面**: http://localhost:10080
|
||
- **后端API**: http://localhost:10080/prod-api/
|
||
- **Python API**: http://localhost:10080/python-api/
|
||
- **API文档**: http://localhost:10080/prod-api/swagger-ui.html
|
||
|
||
## 📋 YOLOv8模型要求
|
||
|
||
### 模型训练
|
||
|
||
如果需要训练新模型:
|
||
|
||
```python
|
||
from ultralytics import YOLO
|
||
|
||
# 加载预训练模型
|
||
model = YOLO('yolov8n.pt') # n/s/m/l/x
|
||
|
||
# 训练
|
||
results = model.train(
|
||
data='data.yaml',
|
||
epochs=100,
|
||
imgsz=640,
|
||
batch=16
|
||
)
|
||
|
||
# 模型保存在 runs/detect/train/weights/best.pt
|
||
```
|
||
|
||
### 模型部署
|
||
|
||
```bash
|
||
# 1. 复制模型到项目
|
||
cp runs/detect/train/weights/best.pt python-inference-service/models/
|
||
|
||
# 2. 创建类别文件
|
||
cat > python-inference-service/models/classes.txt << EOF
|
||
class1
|
||
class2
|
||
class3
|
||
EOF
|
||
|
||
# 3. 重启服务
|
||
docker-compose restart python-service
|
||
```
|
||
|
||
## 🔧 配置说明
|
||
|
||
### 环境变量(.env)
|
||
|
||
所有配置集中在一个文件:
|
||
|
||
```bash
|
||
# 前端端口
|
||
FRONTEND_PORT=10080
|
||
|
||
# MySQL
|
||
MYSQL_HOST=rtsp-mysql
|
||
MYSQL_PORT=3306
|
||
MYSQL_PASSWORD=ruoyi123
|
||
|
||
# Redis
|
||
REDIS_HOST=rtsp-redis
|
||
|
||
# MinIO
|
||
MINIO_HOST=rtsp-minio
|
||
MINIO_ACCESS_KEY=minio
|
||
MINIO_SECRET_KEY=minio123
|
||
|
||
# Python服务
|
||
PYTHON_SERVICE_HOST=rtsp-python-service
|
||
```
|
||
|
||
### 模型配置(models.json)
|
||
|
||
```json
|
||
[
|
||
{
|
||
"name": "yolov8_detector",
|
||
"path": "models/yolov8_model.py",
|
||
"size": [640, 640]
|
||
}
|
||
]
|
||
```
|
||
|
||
### 性能调优
|
||
|
||
编辑 `yolov8_model.py`:
|
||
|
||
```python
|
||
# 置信度阈值
|
||
self.conf_threshold = 0.25 # 默认0.25
|
||
|
||
# 输入尺寸
|
||
self.img_size = 640 # 320/640/1280
|
||
```
|
||
|
||
## 🎯 服务架构
|
||
|
||
```
|
||
┌─────────────┐
|
||
│ Browser │
|
||
│ :10080 │ ← 唯一对外暴露
|
||
└──────┬──────┘
|
||
│
|
||
┌──────▼──────┐
|
||
│ Frontend │
|
||
│ Nginx │
|
||
└──────┬──────┘
|
||
│
|
||
┌───┴────────────────┐
|
||
│ │
|
||
┌──▼───────┐ ┌──────▼──────┐
|
||
│ Backend │ │ Python │
|
||
│ :8080 │ │ Service │
|
||
│ │ │ :8000(CPU) │
|
||
└───┬──┬───┘ └─────────────┘
|
||
│ │
|
||
┌───▼──▼───┐ ┌─────────────┐
|
||
│ MySQL │ │ MinIO(外部) │
|
||
│ Redis │ │ 49.232... │
|
||
└──────────┘ └─────────────┘
|
||
```
|
||
|
||
## ⚠️ 重要提示
|
||
|
||
### 必须操作
|
||
1. ✅ 将 `best.pt` 文件放到 `python-inference-service/models/` 目录
|
||
2. ✅ 确保模型是 YOLOv8 训练的(不支持YOLOv5直接使用)
|
||
3. ✅ 首次启动等待1-2分钟
|
||
|
||
### 可选操作
|
||
1. 📝 创建 `classes.txt` 类别文件
|
||
2. 🎨 调整置信度阈值
|
||
3. 🔧 修改MinIO配置(如需更换服务器)
|
||
|
||
### 常见问题
|
||
|
||
#### Q1: 模型加载失败
|
||
```bash
|
||
# 检查模型文件
|
||
ls -lh python-inference-service/models/best.pt
|
||
|
||
# 查看日志
|
||
docker-compose logs python-service
|
||
```
|
||
|
||
#### Q2: 端口被占用
|
||
```bash
|
||
# 修改 .env 文件
|
||
FRONTEND_PORT=8080 # 改为其他端口
|
||
|
||
# 重启服务
|
||
docker-compose down
|
||
docker-compose up -d
|
||
```
|
||
|
||
#### Q3: 如何更换MinIO服务
|
||
```bash
|
||
# 编辑 ruoyi-admin/src/main/resources/application.yml
|
||
minio:
|
||
endpoint: http://your-server:port
|
||
access-key: your-key
|
||
secret-key: your-secret
|
||
bucket: your-bucket
|
||
```
|
||
|
||
## 📖 文档导航
|
||
|
||
- 📘 **完整部署文档**: `README-DOCKER.md`
|
||
- 🚀 **快速开始**: `DOCKER-QUICK-START.md`
|
||
- 🤖 **YOLOv8配置**: `YOLOV8-SETUP.md`
|
||
- 📋 **文件清单**: `DEPLOYMENT-FILES.md`
|
||
- 🐍 **Python服务**: `python-inference-service/README.md`
|
||
|
||
## 🎓 学习资源
|
||
|
||
- [Ultralytics YOLOv8官方文档](https://docs.ultralytics.com/)
|
||
- [YOLOv8训练教程](https://docs.ultralytics.com/modes/train/)
|
||
- [Docker部署最佳实践](https://docs.docker.com/develop/dev-best-practices/)
|
||
|
||
## 💡 技术支持
|
||
|
||
遇到问题?
|
||
|
||
1. 查看日志:`docker-compose logs [服务名]`
|
||
2. 查看服务状态:`docker-compose ps`
|
||
3. 查看相关文档
|
||
4. 检查模型文件和配置
|
||
|
||
---
|
||
|
||
**更新日期**: 2025-09-30
|
||
**适用版本**: Docker Compose 3.8+, YOLOv8 8.0+
|
||
|
||
✅ 所有更新已完成,可以直接使用! |