当前位置: 首页 > news >正文

保姆级教程:用Docker Compose一键部署WVP-Pro+ZLMediaKit+Assist监控平台(附配置文件)

基于Docker Compose的WVP-Pro+ZLMediaKit+Assist监控平台全栈部署指南

在视频监控与流媒体服务领域,WVP-Pro、ZLMediaKit和Assist的组合已成为许多企业构建智能监控系统的首选方案。传统手动部署方式需要逐个启动容器、管理端口映射和卷挂载,不仅效率低下,还容易出错。本文将彻底改变这一局面——通过Docker Compose实现一键式全栈部署,让复杂系统的搭建变得像喝咖啡一样简单。

1. 环境准备与架构解析

在开始部署之前,我们需要先理解这套技术栈的核心组件及其协作关系:

  • WVP-Pro:开源的视频管理平台,负责设备接入、视频流转发和用户管理
  • ZLMediaKit:高性能流媒体服务器,处理RTSP/RTMP/HLS等协议转换
  • Assist:辅助服务模块,提供信令交换和系统状态监控
  • Redis:缓存服务,加速会话管理和状态同步
  • MySQL:持久化存储系统配置和设备信息

这套架构的典型数据流向是:摄像头→ZLMediaKit→WVP-Pro→终端用户。Docker Compose将把这些服务编排为一个有机整体,解决手动部署面临的三大痛点:

  1. 依赖管理混乱:各组件启动顺序难以把控
  2. 配置同步困难:环境变量和配置文件分散各处
  3. 运维效率低下:启停需要逐个操作容器

推荐的基础环境配置:

组件最低配置推荐配置
CPU4核8核及以上
内存8GB16GB
存储100GB HDD500GB SSD
操作系统Ubuntu 20.04Ubuntu 22.04

提示:生产环境建议使用专用网络存储(NAS)挂载视频录像目录,避免容器重建导致数据丢失

2. Docker Compose全栈配置详解

下面是我们精心设计的docker-compose.yml文件,每个配置项都经过生产环境验证:

version: '3.8' services: redis: image: redis:7.2-alpine container_name: wvp-redis ports: - "6379:6379" volumes: - redis_data:/data restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 3 mysql: image: mysql:8.0 container_name: wvp-mysql environment: MYSQL_ROOT_PASSWORD: SecurePass123! MYSQL_DATABASE: wvp_db MYSQL_USER: wvp_user MYSQL_PASSWORD: Wvp@2023 ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf restart: unless-stopped healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 3 zlmediakit: image: zlmediakit/zlmediakit:master container_name: wvp-zlm ports: - "1935:1935" # RTMP - "8080:80" # HTTP - "8443:443" # HTTPS - "554:554" # RTSP - "10000:10000" # RTP over TCP - "10000:10000/udp" # RTP over UDP - "8000:8000/udp" # 媒体端口 - "9000:9000/udp" # 媒体端口 volumes: - ./data/zlm/www:/opt/media/bin/www - ./config/zlm/config.ini:/opt/media/conf/config.ini environment: TZ: Asia/Shanghai depends_on: redis: condition: service_healthy restart: unless-stopped assist: image: wvp-assist:2.0 container_name: wvp-assist ports: - "18081:18081" volumes: - ./data/assist:/assist - ./config/assist/application.yml:/assist/config/application.yml environment: SPRING_REDIS_HOST: redis SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/wvp_db depends_on: mysql: condition: service_healthy redis: condition: service_healthy restart: unless-stopped wvp-pro: image: wvp-pro:2.7 container_name: wvp-pro ports: - "18080:18080" - "5060:5060" - "15060:15060" volumes: - ./data/wvp:/wvp - ./config/wvp/application.yml:/wvp/config/application.yml environment: SPRING_REDIS_HOST: redis SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/wvp_db MEDIA_SERVER_IP: ${SERVER_IP} depends_on: assist: condition: service_started zlmediakit: condition: service_started restart: unless-stopped volumes: redis_data: mysql_data:

关键配置解析:

  1. 网络拓扑:所有服务默认加入同一个Docker网络,通过服务名直接通信
  2. 健康检查:确保服务依赖顺序,避免启动竞争条件
  3. 持久化存储
    • Redis和MySQL使用命名卷保证数据安全
    • 配置文件通过bind mount实现宿主机编辑
  4. 环境变量:敏感信息通过环境变量注入,避免硬编码

注意:部署前需要设置SERVER_IP环境变量,值为服务器公网IP:export SERVER_IP=你的服务器IP

3. 配置文件定制与优化

配置文件是系统稳定运行的核心,我们提供经过优化的模板配置:

ZLMediaKit配置(config/zlm/config.ini)关键参数:

[api] secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc enable_ffmpeg=true [hook] enable_flow_report=true on_publish=http://assist:18081/api/v1/stream/publish on_unpublish=http://assist:18081/api/v1/stream/unpublish on_play=http://assist:18081/api/v1/stream/play on_stop=http://assist:18081/api/v1/stream/stop

WVP-Pro配置(config/wvp/application.yml)关键参数:

spring: datasource: username: wvp_user password: Wvp@2023 url: jdbc:mysql://mysql:3306/wvp_db?useSSL=false&allowPublicKeyRetrieval=true redis: host: redis port: 6379 media: ip: ${MEDIA_SERVER_IP} port: 10000 secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc

性能调优建议:

  1. ZLMediaKit工作线程数设置(根据CPU核心数调整):
    [thread] rtsp=4 rtmp=4 http=4
  2. MySQL连接池配置(application.yml):
    spring: datasource: hikari: maximum-pool-size: 20 connection-timeout: 30000
  3. JVM内存分配(通过环境变量设置):
    environment: JAVA_OPTS: "-Xms2g -Xmx4g -XX:MaxMetaspaceSize=512m"

4. 部署操作与日常运维

一键启动命令:

docker-compose up -d

系统启动后,可以通过以下命令观察日志:

# 查看整体状态 docker-compose ps # 跟踪WVP-Pro日志 docker-compose logs -f wvp-pro # 检查ZLMediaKit运行状态 docker exec wvp-zlm ./MediaServer -h

常用运维操作:

操作命令
停止所有服务docker-compose down
重启单个服务docker-compose restart wvp-pro
更新镜像docker-compose pull && docker-compose up -d
备份数据库docker exec wvp-mysql mysqldump -u root -pSecurePass123! wvp_db > backup.sql
查看网络带宽使用docker stats

故障排查指南:

  1. 端口冲突:使用netstat -tulnp | grep 端口号检查
  2. 容器启动失败:查看详细日志docker-compose logs 服务名
  3. 视频流无法播放
    • 检查ZLMediaKit的hook地址是否可达
    • 验证SIP信令是否正常:tcpdump -i any port 5060 -vv
  4. 性能瓶颈定位
    # CPU使用率 docker stats --no-stream # 容器内进程分析 docker exec wvp-zlm top

5. 安全加固与扩��方案

基础安全措施:

  1. 修改默认凭证:
    • WVP-Pro管理员密码
    • MySQL root密码
    • ZLMediaKit api.secret
  2. 网络隔离:
    networks: wvp-net: driver: bridge internal: true
  3. 防火墙规则:
    ufw allow 18080/tcp # WVP-Pro web ufw allow 5060/udp # SIP ufw allow 10000:20000/udp # 媒体端口范围

高可用架构建议:

  1. 数据库集群:使用MySQL主从复制或Galera集群
  2. Redis哨兵:配置Redis Sentinel实现自动故障转移
  3. ZLM集群
    • 部署多个ZLM实例
    • 通过WVP-Pro的媒体服务器集群功能管理
  4. 负载均衡:使用Nginx对WVP-Pro做HTTP负载均衡

监控集成方案:

  1. Prometheus监控指标收集:
    # docker-compose.yml新增 prometheus: image: prom/prometheus ports: - "9090:9090" volumes: - ./config/prometheus.yml:/etc/prometheus/prometheus.yml
  2. Grafana仪表板配置示例:
    grafana: image: grafana/grafana ports: - "3000:3000" volumes: - grafana_data:/var/lib/grafana

这套部署方案已经在多个生产环境稳定运行,处理着每天TB级的视频流量。相比传统部署方式,Docker Compose方案将部署时间从小时级缩短到分钟级,且极大降低了运维复杂度。

http://www.gsyq.cn/news/1455010.html

相关文章:

  • 代码随想录算法训练营Day59 图论09 | Dijkstra(堆优化版)精讲、Bellman_ford 算法精讲
  • FastAPI 分层架构深度解析:从 Controller 到 Service 与 CRUD 层
  • 遥感影像分割不再靠蒙:eCognition ESP2插件保姆级安装与参数调试指南
  • 2026年上海市PMP培训机构哪家好?官方授权R.E.P.报考指南 - 众智商学院课程中心
  • 终极免费甘特图工具:GanttProject 让你轻松管理复杂项目
  • 2026年6月全国百达翡丽官方维修服务网点汇总,门店地址及售后电话一览 - 资讯快报
  • 基于Arduino与红外传感器的数字转速计设计与实现
  • 基于ESP32-CAM的3D打印机无线监控方案:从硬件选型到软件集成
  • 基于LM317的DIY可调稳压电源制作全攻略:从原理到实践
  • 2026年 磁铁全品类推荐榜单:钕铁硼/异形/方形/圆形/电机磁铁及锂电磁棒/磁组件源头厂家实力解析! - 品牌企业推荐师(官方)
  • 2026巴中市本地黄金回收铂金白银回收哪家强?TOP5 正规门店榜单 + 联系方式 - 中安检金银铂钻回收
  • 想选国内余热锅炉销售厂家?这几家值得你重点关注!
  • 荆门市地区2026年权威甄选:黄金回收白银铂金回收优质门店 TOP5 含详细电话 - 诚金汇钻回收公司
  • ThinkPad风扇控制终极指南:TPFanCtrl2双风扇管理工具详解
  • 别只盯着CNN/RNN了!用DBN+Python搞定你的第一个无监督特征提取项目
  • HoloDesk深度解析:从AR交互原理到实时物理模拟的工程实践
  • 计算机毕业设计之基于Hive的网易云音乐可视化系统的设计与实现
  • SSL 证书检查:网站 HTTPS 的“体检报告”,过期前再也不用手忙脚乱
  • 保姆级教程:手把手教你从中国移动云盘下载并安装Matlab 2023b(附文件安装密钥与替换bin文件夹避坑指南)
  • TrafficMonitorPlugins:构建高效智能的现代化系统监控生态
  • 低查重AI教材生成利器!一键搞定AI写教材,快速输出高质量教材内容!
  • 终极指南:如何快速解锁家庭网关的高级管理权限
  • 用Python和Matlab搞定东南大学齿轮箱数据集:从数据读取到故障分类实战
  • ShawzinBot终极指南:3分钟掌握MIDI转游戏按键的简单方法
  • 【会议征稿通知 | 佛山大学主办 | IEEE出版 | EI 、Scopus稳定检索】第九届结构工程与工业建筑国际学术会议(ICSEIA 2026)
  • 不只是安装:Keil C51 V9.61 新特性实测与51单片机编译效率提升指南
  • 快手视频下载终极指南:KS-Downloader无水印高清批量下载完全教程
  • 像素蛋糕全攻略:AI一键批量精修,摄影师的“效率神器”来了!
  • Mac窗口置顶神器Topit:三步打造你的专属多任务工作台
  • 终极流放之路2角色构建指南:Path of Building PoE2完全解析