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

保姆级教程:用Docker Compose一键部署WVP-PRO+ZLM+录像服务,告别繁琐配置

基于Docker Compose的WVP-PRO+ZLM流媒体平台一键部署方案

在视频监控与流媒体服务领域,快速搭建稳定可靠的平台一直是运维人员的核心诉求。传统部署方式需要逐个安装配置WVP-PRO、ZLMediaKit、Redis、MySQL等多个组件,不仅耗时费力,而且难以保证环境一致性。本文将介绍如何通过Docker Compose实现全栈服务的一键部署,让您5分钟内搭建起功能完备的GB28181流媒体平台。

1. 环境准备与架构设计

1.1 系统需求建议

部署前请确保宿主机满足以下条件:

  • 操作系统:Ubuntu 20.04/22.04 LTS或CentOS 7/8
  • Docker版本:20.10.0+
  • Docker Compose:v2.0.0+
  • 硬件配置
    • CPU:4核及以上(推荐8核)
    • 内存:8GB+(视频处理建议16GB)
    • 存储:100GB+ SSD(录像文件需额外空间)

提示:运行docker --versiondocker-compose version检查版本,过低版本可能导致兼容性问题。

1.2 服务架构图解

整套方案包含五个核心服务:

┌─────────────────────────────────────────────────┐ │ Docker Host │ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ │ │ WVP-PRO │ │ ZLMedia │ │ MySQL │ │ │ │ (Java) │◄─┤ Kit │ │ 8.0 │ │ │ └───────────┘ └───────────┘ └───────────┘ │ │ ▲ ▲ ▲ │ │ │ │ │ │ │ ┌───────────┐ ┌───────────┐ │ │ │ │ Redis │ │ WVP-ASSIST│ │ │ │ │ 7.0 │ │ (录像服务)│ │ │ │ └───────────┘ └───────────┘ │ │ │ │ │ └─────────────────────────────────────┼─────────┘ │ ┌────┴────┐ │ 客户端 │ │(浏览器) │ └─────────┘

2. Docker Compose编排实战

2.1 完整配置文件解析

创建docker-compose.yml文件,内容如下:

version: '3.8' services: redis: image: redis:7.0-alpine container_name: wvp-redis restart: unless-stopped volumes: - redis_data:/data ports: - "6379:6379" environment: - TZ=Asia/Shanghai healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 30s timeout: 10s retries: 3 mysql: image: mysql:8.0 container_name: wvp-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: wvp@1234 MYSQL_DATABASE: wvp TZ: Asia/Shanghai volumes: - mysql_data:/var/lib/mysql - ./config/mysql/conf.d:/etc/mysql/conf.d ports: - "3306:3306" healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 30s timeout: 10s retries: 3 zlm: image: zlmediakit/zlmediakit:master container_name: zlm-server restart: unless-stopped volumes: - ./config/zlm/config.ini:/opt/media/config/config.ini - ./record:/opt/media/bin/www/record ports: - "1935:1935" # RTMP - "80:80" # HTTP - "443:443" # HTTPS - "554:554" # RTSP - "10000:10000" # RTP - "30000-35000:30000-35000/udp" # RTP端口范围 environment: - TZ=Asia/Shanghai depends_on: redis: condition: service_healthy wvp-pro: image: 648540858/wvp-pro:latest container_name: wvp-pro restart: unless-stopped volumes: - ./config/wvp/application.yml:/app/config/application.yml ports: - "18080:18080" - "15060:15060" # SIP端口 environment: - TZ=Asia/Shanghai depends_on: redis: condition: service_healthy mysql: condition: service_healthy zlm: condition: service_started wvp-assist: image: panjjo/wvp-assist container_name: wvp-assist restart: unless-stopped volumes: - ./config/assist/application.yml:/app/config/application.yml - ./record:/record ports: - "18081:18081" depends_on: redis: condition: service_healthy volumes: redis_data: mysql_data:

关键配置说明:

  • 端口映射:按需调整左侧宿主机端口,右侧容器端口勿改
  • 持久化存储:MySQL和Redis数据、录像文件均持久化
  • 健康检查:确保服务依赖顺序启动
  • 时区统一:所有容器设置为Asia/Shanghai时区

2.2 配置文件定制

创建配置文件目录结构:

mkdir -p {config/wvp,config/zlm,config/assist,config/mysql/conf.d,record}

WVP-PRO主配置(config/wvp/application.yml):

spring: redis: host: redis port: 6379 database: 0 password: "" datasource: url: jdbc:mysql://mysql:3306/wvp?useUnicode=true&characterEncoding=UTF8 username: root password: wvp@1234 hikari: maximum-pool-size: 20 sip: ip: 0.0.0.0 port: 15060 domain: 4101050000 id: 41010500002000000001 media: id: zlm001 ip: zlm http-port: 80 secret: LluEd5evhoTswSZ1qDnafNEFTCFnnWCe rtp: enable: true port-range: 30000,35000

ZLM媒体服务器配置(config/zlm/config.ini):

[api] apiDebug=1 secret=LluEd5evhoTswSZ1qDnafNEFTCFnnWCe [hook] enable=0 alive_interval=10 [general] mediaServerId=zlm001 flowThreshold=1024

录像服务配置(config/assist/application.yml):

spring: redis: host: redis port: 6379 database: 1 record: path: /record days: 7 ffmpeg: path: /usr/bin/ffmpeg ffprobe: /usr/bin/ffprobe

3. 部署与运维实践

3.1 一键启动与停止

启动所有服务:

docker-compose up -d

停止服务:

docker-compose down

查看服务状态:

docker-compose ps

3.2 常见问题排查

服务启动顺序问题

# 查看容器日志 docker-compose logs -f wvp-pro # 进入容器调试 docker exec -it wvp-pro sh

数据库连接失败

  1. 检查MySQL容器是否健康运行
  2. 验证application.yml中的连接字符串
  3. 必要时初始化数据库:
docker exec -it wvp-pro java -jar /app/wvp-pro.jar --spring.config.location=/app/config/application.yml --init-db

媒体流无法播放

  1. 检查ZLM端口映射是否正确
  2. 验证WVP-PRO与ZLM的secret配置一致
  3. 测试直接访问ZLM流地址:
rtmp://服务器IP/live/流ID

4. 高级配置与优化

4.1 性能调优建议

MySQL优化(config/mysql/conf.d/my.cnf):

[mysqld] innodb_buffer_pool_size = 1G innodb_log_file_size = 256M max_connections = 200

JVM参数调整: 修改docker-compose.yml中wvp-pro服务:

environment: - JAVA_OPTS=-Xms2g -Xmx4g -XX:+UseG1GC

ZLM多实例负载均衡

zlm1: image: zlmediakit/zlmediakit:master # ...其他配置同前例 environment: - INSTANCE_ID=zlm1 zlm2: image: zlmediakit/zlmediakit:master # ...其他配置同前例 environment: - INSTANCE_ID=zlm2

4.2 安全加固措施

HTTPS配置

  1. 准备SSL证书文件
  2. 修改WVP-PRO配置:
server: ssl: enabled: true key-store: classpath:keystore.jks key-store-password: yourpassword

防火墙规则

# 只开放必要端口 ufw allow 80,443,1935,554,18080,15060 ufw enable

定期备份方案

# 备份数据库 docker exec wvp-mysql sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" wvp' > wvp-backup.sql # 备份录像文件 tar czvf record-$(date +%Y%m%d).tar.gz record/

实际部署中发现,使用Docker Compose管理这套流媒体平台后,版本升级变得异常简单——只需修改镜像版本号重新部署即可。录像文件的持久化存储也使得服务重启后历史数据完好无损,这对监控场景尤为重要。

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

相关文章:

  • 如何5分钟搭建专业级在线LaTeX写作环境:WebLaTeX完全指南
  • 5分钟永久备份:GetQzonehistory让你轻松导出QQ空间所有历史说说
  • 原神60帧限制终于被打破!这份完整指南教你如何免费解锁120帧流畅体验
  • 别再被1e-9搞懵了!Python科学计数法实战避坑指南(附数据处理案例)
  • 终极指南:使用XUnity.AutoTranslator打破游戏语言障碍的完整解决方案
  • AI教材编写必备:低查重AI工具助力,1小时生成10万字专业教材!
  • Fast-GitHub浏览器扩展架构解析:智能路由与DOM注入技术实现GitHub加速方案
  • GPU加速分子动力学模拟:原子-离子相互作用优化
  • Module Pool Programming,老派 Dynpro 程序怎样写出新味道
  • 抖音批量下载终极指南:5分钟实现个人主页视频一键保存
  • PCL2启动器Java环境配置与Mod加载机制深度解析
  • 别再只会用unittest了!用Pytest+Requests给你的接口自动化测试升个级(附完整项目结构)
  • 大模型安全测试(Red Teaming 越狱测试):如何诱导 AI 说错话?
  • MTK设备救砖终极指南:开源神器MTKClient完整教程
  • 无盒无卡爱马仕 / 香奈儿 / LV / 迪奥 / 古驰奢包能回收吗?成都本地回收实测真相! - 奢侈品回收测评
  • AI风口来袭!小白也能抓住机遇,收藏这篇看懂500万人才缺口背后的真相!
  • JGB37-520(12V 带编码器)电机 铭牌参数完整详解
  • 天津乐修漏水检测:滨海新区卫生间免砸砖防水公司推荐几家 - LYL仔仔
  • 从零构建ModelOps管道:AI模型工业化部署与运维实战指南
  • 基准测试(Benchmark):读懂 MMLU, HumanEval, C-Eval 榜单背后的意义
  • 2026年湛江市CPPM报名十大核心问题全流程答疑 - 众智商学院课程中心
  • 2026宁波婚嫁三金/旧金饰回收避坑指南!5家本地门店实测,旧款不折价认准这一家 - 宁波早知道
  • 终极暗黑3鼠标宏工具D3KeyHelper:5分钟快速配置完全指南
  • 抖音批量下载神器:5分钟掌握无水印视频高效下载
  • DLSS Swapper深度解析:5分钟实现游戏DLSS智能管理的一站式解决方案
  • 昨日的欺骗的内容入口:听众为什么会搜索它
  • 从失忆到记住一切:Spring AI AutoMemoryTools 与 Session API 实战
  • 9大排序算法,你了解多少?
  • VUE跨页面传值的精妙
  • 网络技术12-FTP协议详解——传统文件传输的“老派方案“