保姆级教程:用Docker Compose一键部署WVP-PRO+ZLMediaKit+Assist,告别手动配环境
·
保姆级教程:用Docker Compose一键部署WVP-PRO+ZLMediaKit+Assist全栈监控系统
在视频监控与流媒体服务领域,WVP-PRO(Web Video Platform)与ZLMediaKit的组合已成为开源解决方案的黄金标准。但传统部署方式需要逐个配置Redis、MySQL、ZLMediaKit、Assist和WVP-PRO五个组件,不仅耗时费力,还容易因环境差异导致各种"玄学问题"。本文将彻底改变这一局面——通过Docker Compose实现 真正的一键部署 ,让复杂系统搭建变得像喝咖啡一样简单。
1. 环境准备与架构解析
1.1 为什么选择Docker Compose方案
传统部署方式存在三大痛点:
- 依赖管理混乱 :组件启动顺序需要人工控制
- 配置散落各处 :每个服务都有独立的配置文件
- 网络隔离缺失 :端口冲突风险难以避免
我们的解决方案通过以下设计解决这些问题:
version: '3.8'
services:
redis:
image: redis:alpine
networks:
- media_net
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: securepassword
networks:
- media_net
注:实际完整配置见后续章节
1.2 硬件需求与前置条件
建议部署环境满足:
- CPU :4核以上(视频转码需求)
- 内存 :8GB起步(建议16GB)
- 存储 :SSD硬盘,至少100GB可用空间
软件环境要求:
- Docker Engine ≥ 20.10.14
- Docker Compose ≥ 2.5.1
- 已开启Linux内核的IPv4转发功能
验证环境准备:
# 检查Docker版本
docker --version
# 检查Compose版本
docker compose version
# 开启IP转发(需sudo权限)
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf
sudo sysctl -p
2. 全栈服务配置详解
2.1 网络与存储设计
创建独立的Docker网络和持久化卷:
networks:
media_net:
driver: bridge
ipam:
config:
- subnet: 172.28.0.0/16
volumes:
mysql_data:
redis_data:
zlm_conf:
zlm_www:
关键设计考量:
- 子网隔离 :避免与主机网络冲突
- 命名卷 :数据持久化保障
- 带宽预留 :为视频流预留足够网络资源
2.2 核心服务配置模板
完整docker-compose.yml结构示例:
services:
zlmediakit:
image: zlmediakit/zlmediakit:master
ports:
- "1935:1935" # RTMP
- "8080:80" # HTTP-FLV
volumes:
- zlm_conf:/opt/media/conf
- zlm_www:/opt/media/bin/www
networks:
- media_net
restart: unless-stopped
wvp-pro:
image: wvp-pro:latest
depends_on:
- mysql
- redis
- zlmediakit
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/wvp?useSSL=false
ports:
- "18080:18080"
networks:
- media_net
配置要点说明:
- 端口映射 :按需开放必要端口
- 健康检查 :增加服务可用性保障
- 资源限制 :避免单个服务耗尽资源
3. 实战部署流程
3.1 初始化数据库
创建MySQL初始化脚本
init.sql
:
CREATE DATABASE IF NOT EXISTS wvp CHARACTER SET utf8mb4;
CREATE USER 'wvp_user'@'%' IDENTIFIED BY 'StrongPassword123';
GRANT ALL PRIVILEGES ON wvp.* TO 'wvp_user'@'%';
FLUSH PRIVILEGES;
通过Docker Compose挂载初始化脚本:
mysql:
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
3.2 一键启动与验证
启动全部服务:
docker compose up -d
验证服务状态:
# 查看容器状态
docker compose ps
# 检查日志
docker compose logs -f zlmediakit
服务健康检查端点:
-
WVP-PRO:
http://localhost:18080/api/health -
ZLMediaKit:
http://localhost:8080/index/api/getServerConfig
4. 高级配置与优化
4.1 性能调优参数
ZLMediaKit关键配置(
config.ini
):
[rtmp]
timeout_sec=20
[general]
max_stream_wait_ms=5000
WVP-PRO的JVM参数调整:
environment:
JAVA_OPTS: "-Xms2g -Xmx4g -XX:+UseG1GC"
4.2 安全加固方案
网络隔离策略:
zlmediakit:
networks:
media_net:
aliases:
- media-server
访问控制列表示例:
[api]
secret=YourComplexSecretKey
allow_ips=172.28.0.0/16,192.168.1.100
4.3 监控与运维
Prometheus监控配置:
zlmediakit:
environment:
ENABLE_PROMETHEUS: "true"
日志收集方案:
# 查看实时日志
docker compose logs --tail=100 -f
# 日志文件轮转配置
services:
wvp-pro:
logging:
options:
max-size: "10m"
max-file: "3"
5. 故障排查与日常维护
常见问题解决速查表:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 504 Gateway Timeout | 服务依赖未就绪 |
检查
depends_on
条件
|
| 视频流卡顿 | 网络带宽不足 |
调整
networks
配置
|
| 数据库连接失败 | 认证信息错误 |
验证
environment
变量
|
日常维护命令备忘:
# 批量更新镜像
docker compose pull
# 灰度重启服务
docker compose up -d --no-deps zlmediakit
# 数据备份
docker compose exec mysql sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" wvp' > backup.sql
遇到容器启动失败时,建议分步调试:
# 单独启动基础服务
docker compose up -d mysql redis
# 验证数据库连接
docker compose exec mysql mysql -uroot -p
# 逐步添加其他服务
更多推荐
所有评论(0)