)
基于Docker Compose的流媒体监控平台高效部署指南引言在当今快速发展的流媒体监控领域WVP-PRO、ZLMediaKit和Assist三大组件的组合已成为行业标配。然而传统的手动部署方式往往让开发者陷入繁琐的配置和依赖管理泥潭。本文将介绍如何利用Docker Compose这一现代化工具实现三大组件的无缝集成与一键部署。对于需要快速搭建流媒体监控平台的开发者而言Docker Compose提供了三大核心优势环境一致性消除在我机器上能运行的经典问题配置即代码所有服务配置版本化便于团队协作一键启停简化开发、测试和生产环境的切换流程1. 环境准备与基础配置1.1 系统要求与Docker环境推荐使用Ubuntu 22.04 LTS作为基础操作系统确保系统内核版本不低于5.4# 检查内核版本 uname -r # 输出示例5.15.0-76-generic安装最新版Docker Engine和Compose插件# 安装Docker官方GPG密钥 sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod ar /etc/apt/keyrings/docker.asc # 添加Docker仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 验证安装 docker compose version # 预期输出Docker Compose version v2.x.x1.2 目录结构规划合理的目录结构是高效管理Docker Compose项目的基础/wvp-pro-docker/ ├── docker-compose.yml # 主配置文件 ├── .env # 环境变量 ├── zlm/ │ ├── conf/ # ZLMediaKit配置 │ └── www/ # Web资源 ├── assist/ │ └── config/ # Assist配置 └── wvp/ └── config/ # WVP-PRO配置创建基础目录mkdir -p /opt/wvp-pro-docker/{zlm/{conf,www},assist/config,wvp/config} cd /opt/wvp-pro-docker2. Docker Compose核心配置2.1 服务定义与网络架构创建docker-compose.yml文件定义三大核心服务version: 3.8 services: zlm: image: zlmediakit/zlmediakit:master container_name: zlm restart: unless-stopped ports: - 1935:1935 # RTMP - 8080:80 # HTTP - 8443:443 # HTTPS - 8554:554 # RTSP - 10000:10000 # RTP - 10000:10000/udp - 8000:8000/udp # WebRTC - 9000:9000/udp # HLS volumes: - ./zlm/www:/opt/media/bin/www - ./zlm/conf:/opt/media/conf networks: - wvp-network assist: image: wvp-assist:latest container_name: assist restart: unless-stopped ports: - 18081:18081 volumes: - ./assist/config:/assist/config depends_on: - zlm networks: - wvp-network wvp-pro: image: wvp-pro:latest container_name: wvp-pro restart: unless-stopped ports: - 18080:18080 # Web管理界面 - 5060:5060 # SIP - 15060:15060 # API volumes: - ./wvp/config:/wvp/config depends_on: - zlm - assist networks: - wvp-network networks: wvp-network: driver: bridge2.2 关键配置详解端口映射策略服务端口协议用途ZLM1935TCPRTMP流媒体接收8080TCPHTTP API接口10000UDPRTP媒体传输WVP-PRO18080TCP管理后台5060TCP/UDPSIP信令卷挂载最佳实践配置文件所有服务的配置文件都应挂载到宿主机便于修改和版本控制媒体文件建议单独挂载大容量存储卷用于媒体存储日志文件可将日志目录挂载出来便于排查问题3. 高级配置与优化3.1 环境变量管理创建.env文件统一管理敏感信息# 数据库配置 MYSQL_ROOT_PASSWORDsecurepassword MYSQL_DATABASEwvp_pro MYSQL_USERwvp_user MYSQL_PASSWORDuserpassword # Redis配置 REDIS_PASSWORDredispass # WVP-PRO管理员账号 ADMIN_USERadmin ADMIN_PASSWORDstrongpassword更新docker-compose.yml引用环境变量environment: - MYSQL_ROOT_PASSWORD${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE${MYSQL_DATABASE} - MYSQL_USER${MYSQL_USER} - MYSQL_PASSWORD${MYSQL_PASSWORD} - REDIS_PASSWORD${REDIS_PASSWORD}3.2 资源限制与健康检查为关键服务添加资源限制和健康检查zlm: deploy: resources: limits: cpus: 2 memory: 2G reservations: memory: 1G healthcheck: test: [CMD, curl, -f, http://localhost:8080/index/api/getServerConfig] interval: 30s timeout: 10s retries: 34. 部署实战与问题排查4.1 一键启动与停止启动所有服务docker compose up -d查看服务状态docker compose ps停止服务docker compose down4.2 常见问题解决方案端口冲突问题# 检查端口占用 sudo netstat -tulnp | grep 端口号 # 解决方案 # 1. 修改docker-compose.yml中的端口映射 # 2. 停止占用端口的服务服务启动顺序问题depends_on: zlm: condition: service_healthy redis: condition: service_started日志查看技巧# 查看实时日志 docker compose logs -f # 过滤特定服务的日志 docker compose logs zlm | grep 关键信息 # 导出日志到文件 docker compose logs --no-color wvp-deploy.log5. 生产环境优化建议5.1 性能调优参数在zlm/conf/config.ini中添加[rtp] timeoutSec3600 portRange30000-35000 [hook] enable_flow_report1 on_flow_reporthttp://assist:18081/api/v1/flow_report5.2 监控与告警配置使用cAdvisorPrometheusGrafana监控方案monitoring: image: gcr.io/cadvisor/cadvisor:v0.47.0 container_name: cadvisor ports: - 8088:8080 volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro networks: - wvp-network5.3 备份与恢复策略创建备份脚本backup.sh#!/bin/bash BACKUP_DIR/backups/wvp-$(date %Y%m%d) mkdir -p $BACKUP_DIR # 备份配置文件 cp -r /opt/wvp-pro-docker/{zlm,assist,wvp} $BACKUP_DIR # 备份数据库 docker exec mysql sh -c exec mysqldump --all-databases -uroot -p$MYSQL_ROOT_PASSWORD $BACKUP_DIR/all-databases.sql # 压缩备份 tar -czf $BACKUP_DIR.tar.gz $BACKUP_DIR