保姆级教程:用Docker Compose一键部署WVP-PRO+ZLMediaKit+Assist监控平台(避坑指南)
·
基于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 a+r /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.x
1.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-docker
2. 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: bridge
2.2 关键配置详解
端口映射策略 :
| 服务 | 端口 | 协议 | 用途 |
|---|---|---|---|
| ZLM | 1935 | TCP | RTMP流媒体接收 |
| 8080 | TCP | HTTP API接口 | |
| 10000 | UDP | RTP媒体传输 | |
| WVP-PRO | 18080 | TCP | 管理后台 |
| 5060 | TCP/UDP | SIP信令 |
卷挂载最佳实践 :
- 配置文件 :所有服务的配置文件都应挂载到宿主机,便于修改和版本控制
- 媒体文件 :建议单独挂载大容量存储卷用于媒体存储
- 日志文件 :可将日志目录挂载出来便于排查问题
3. 高级配置与优化
3.1 环境变量管理
创建
.env
文件统一管理敏感信息:
# 数据库配置
MYSQL_ROOT_PASSWORD=securepassword
MYSQL_DATABASE=wvp_pro
MYSQL_USER=wvp_user
MYSQL_PASSWORD=userpassword
# Redis配置
REDIS_PASSWORD=redispass
# WVP-PRO管理员账号
ADMIN_USER=admin
ADMIN_PASSWORD=strongpassword
更新
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: 3
4. 部署实战与问题排查
4.1 一键启动与停止
启动所有服务:
docker compose up -d
查看服务状态:
docker compose ps
停止服务:
docker compose down
4.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.log
5. 生产环境优化建议
5.1 性能调优参数
在
zlm/conf/config.ini
中添加:
[rtp]
timeoutSec=3600
portRange=30000-35000
[hook]
enable_flow_report=1
on_flow_report=http://assist:18081/api/v1/flow_report
5.2 监控与告警配置
使用cAdvisor+Prometheus+Grafana监控方案:
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-network
5.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
更多推荐


所有评论(0)