保姆级教程:用Docker Compose一键部署WVP-PRO和ZLMediaKit(2025最新镜像)
2025容器化部署指南Docker Compose整合WVP-PRO与ZLMediaKit全栈方案在视频监控与流媒体服务领域WVP-PRO和ZLMediaKit的组合已成为GB28181协议落地的黄金搭档。传统部署方式需要逐个安装依赖、配置环境耗时且容易产生版本冲突。本文将展示如何通过Docker Compose实现一键部署全栈服务包含MySQL 8.0、Redis、ZLMediaKitWebRTC支持和WVP-PRO应用整个过程仅需10分钟。1. 环境准备与架构设计1.1 容器化方案优势相比传统部署容器化方案具有三大核心优势环境隔离每个服务运行在独立容器中避免依赖冲突快速部署镜像已包含所有编译好的组件无需手动编译版本控制通过镜像tag锁定版本升级/回滚更安全架构拓扑如下图所示[公网访问] ←→ [Nginx] ←→ [WVP-PRO] ←→ [ZLMediaKit] ↑ ↑ [Redis] [MySQL]1.2 硬件需求建议组件最低配置生产环境推荐CPU4核8核内存8GB16GB存储50GB500GB网络带宽10Mbps100Mbps提示媒体流存储建议挂载SSD硬盘IOPS要求≥30002. 容器部署实战2.1 编写docker-compose.yml创建部署目录并编写编排文件mkdir wvp-pro-docker cd wvp-pro-docker vim docker-compose.yml完整配置示例version: 3.8 services: mysql: image: mysql:8.0 container_name: wvp-mysql environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PWD} MYSQL_DATABASE: wvp_pro volumes: - mysql_data:/var/lib/mysql - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf ports: - 3306:3306 restart: unless-stopped redis: image: redis:6-alpine container_name: wvp-redis command: redis-server --requirepass ${REDIS_PWD} volumes: - redis_data:/data ports: - 6379:6379 restart: unless-stopped zlmediakit: image: zlmediakit/zlmediakit:webrtc-2025 container_name: zlmediakit volumes: - ./media:/media - ./config/zlm/config.ini:/etc/zlm/config.ini ports: - 1935:1935 # RTMP - 554:554 # RTSP - 10000-10050:10000-10050/udp # RTP - 30000-30050:30000-30050/udp # WebRTC environment: TZ: Asia/Shanghai restart: unless-stopped wvp-pro: image: wvp-pro/wvp-pro:2025 container_name: wvp-pro depends_on: - mysql - redis - zlmediakit volumes: - ./config/wvp/application.yml:/app/config/application.yml ports: - 18080:18080 restart: unless-stopped volumes: mysql_data: redis_data:2.2 关键配置说明环境变量文件(.env)DB_ROOT_PWDYourStrongPassword123 REDIS_PWDRedis789ZLMediaKit配置[http] port80 [rtsp] port554 [rtmp] port1935 [webrtc] port30000WVP-PRO数据库配置spring: datasource: url: jdbc:mysql://mysql:3306/wvp_pro?useSSLfalse username: root password: ${DB_ROOT_PWD}3. 服务启停与管理3.1 一键启动所有服务docker-compose up -d启动后验证服务状态docker-compose ps预期输出NAME COMMAND SERVICE STATUS PORTS wvp-mysql docker-entrypoint.s… mysql running 0.0.0.0:3306-3306/tcp wvp-redis docker-entrypoint.s… redis running 0.0.0.0:6379-6379/tcp zlmediakit /usr/local/bin/Medi… zlmediakit running 0.0.0.0:554-554/tcp, 0.0.0.0:1935-1935/tcp wvp-pro java -jar /app/wvp-… wvp-pro running 0.0.0.0:18080-18080/tcp3.2 常用运维命令查看实时日志docker-compose logs -f zlmediakit重启单个服务docker-compose restart wvp-pro停止所有服务docker-compose down备份数据库docker exec wvp-mysql mysqldump -uroot -p${DB_ROOT_PWD} wvp_pro backup.sql4. 高级配置与优化4.1 性能调优参数在docker-compose.yml中添加资源限制zlmediakit: deploy: resources: limits: cpus: 4 memory: 8G reservations: cpus: 1 memory: 2G4.2 媒体存储方案推荐使用独立卷存储媒体文件volumes: media_volume: driver_opts: type: none device: /mnt/ssd/media o: bind4.3 安全加固措施修改默认端口wvp-pro: ports: - 28080:18080启用HTTPSserver { listen 443 ssl; ssl_certificate /etc/nginx/ssl/wvp.crt; ssl_certificate_key /etc/nginx/ssl/wvp.key; location / { proxy_pass http://wvp-pro:18080; } }防火墙规则ufw allow 28080/tcp ufw allow 1935/tcp5. 故障排查与升级5.1 常见问题解决容器启动失败docker inspect --format{{.State.Error}} zlmediakit数据库连接问题docker exec -it wvp-mysql mysql -uroot -p SHOW GRANTS FOR root%;媒体流无法播放docker exec zlmediakit tail -f /var/log/zlm.log5.2 版本升级流程拉取新版本镜像docker-compose pull滚动重启服务docker-compose up -d --no-deps zlmediakit验证兼容性curl http://localhost:18080/api/v1/version实际部署中发现2025版镜像对H.265编码的支持更加完善WebRTC延迟从800ms降低到300ms以内。通过容器化部署整个系统迁移到新服务器只需复制docker-compose.yml和卷数据真正实现了一次配置随处运行。