保姆级教程:用Docker Compose一键部署WVP-PRO+ZLM+Assist流媒体监控平台(附配置文件)
零配置实战:基于Docker Compose的流媒体监控平台全栈部署指南
在视频监控与流媒体技术快速普及的今天,搭建一个功能完整的监控测试环境已成为开发者和运维人员的刚需。传统部署方式需要逐个配置Redis、MySQL、ZLM、WVP-PRO和Assist服务,不仅步骤繁琐,还容易因环境差异导致各种"玄学"问题。本文将带你用Docker Compose实现 真正的一键部署 ,从零开始构建高可用的流媒体监控平台。
1. 环境准备与架构解析
1.1 为什么选择Docker Compose方案
相比原始的手动
docker run
部署方式,Compose方案具有三大核心优势:
- 原子化部署 :所有服务依赖关系和启动顺序通过YAML文件定义,消除人工操作误差
- 配置版本化 :将服务器环境转化为代码,方便迁移和版本管理
- 资源隔离 :每个服务拥有独立的网络命名空间,避免端口冲突
典型应用场景包括:
- 本地开发测试环境快速搭建
- 自动化CI/CD流水线集成
- 生产环境的容器化部署
1.2 系统资源需求
建议部署主机满足以下配置:
| 资源类型 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 4核 |
| 内存 | 4GB | 8GB |
| 磁盘 | 20GB | 50GB |
| 系统 | Ubuntu 20.04+ | Ubuntu 22.04 LTS |
提示:流媒体服务对UDP端口有较高要求,确保防火墙放行相关端口范围
2. 全栈Docker Compose配置详解
2.1 基础服务配置
创建
docker-compose.yml
文件,首先定义MySQL和Redis服务:
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: wvp-mysql
environment:
MYSQL_ROOT_PASSWORD: securepassword
MYSQL_DATABASE: wvp_db
volumes:
- mysql_data:/var/lib/mysql
ports:
- "3306:3306"
restart: unless-stopped
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 10s
retries: 3
redis:
image: redis:7
container_name: wvp-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
restart: unless-stopped
2.2 流媒体核心服务集成
添加ZLMediaKit服务配置,注意挂载配置文件:
zlm:
image: zlmediakit/zlmediakit:master
container_name: zlmediakit
ports:
- "1935:1935" # RTMP
- "8080:80" # HTTP
- "8443:443" # HTTPS
- "554:554" # RTSP
- "10000:10000" # RTP over TCP
- "10000:10000/udp"
- "8000:8000/udp"
- "9000:9000/udp"
volumes:
- ./zlm/conf:/opt/media/conf
- ./zlm/www:/opt/media/bin/www
depends_on:
- redis
restart: unless-stopped
关键配置说明:
-
ports段暴露了RTMP、RTSP、HTTP等协议端口 -
volumes将配置文件和静态资源目录挂载到宿主机 -
depends_on确保Redis服务先启动
2.3 应用服务配置
WVP-PRO和Assist服务的完整配置:
wvp-assist:
image: wvp-assist:latest
container_name: wvp-assist
ports:
- "18081:18081"
volumes:
- ./assist:/assist
command: /bin/bash -c "cd /assist && ./start1.sh"
depends_on:
- mysql
- redis
restart: unless-stopped
wvp-pro:
image: wvp-pro:latest
container_name: wvp-pro
ports:
- "18080:18080"
- "5060:5060"
- "15060:15060"
volumes:
- ./wvp:/wvp
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/wvp_db
- SPRING_REDIS_HOST=redis
depends_on:
- mysql
- redis
- zlm
- wvp-assist
restart: unless-stopped
volumes:
mysql_data:
redis_data:
3. 配置优化与调优技巧
3.1 网络性能优化
在Compose文件中添加自定义网络配置:
networks:
wvp-net:
driver: bridge
ipam:
config:
- subnet: 172.28.0.0/16
然后为每个服务添加:
networks:
- wvp-net
优化效果:
- 容器间通信走内部网络,降低延迟
- 避免端口冲突
- 方便服务发现(可直接使用容器名访问)
3.2 资源限制配置
防止单个服务占用过多资源:
deploy:
resources:
limits:
cpus: '1'
memory: 2G
reservations:
cpus: '0.5'
memory: 1G
3.3 日志管理方案
推荐配置日志轮转和集中收集:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
4. 实战部署与运维
4.1 一键启动与停止
启动全部服务(后台模式):
docker-compose up -d
查看服务状态:
docker-compose ps
停止服务并清理:
docker-compose down
4.2 常见问题排查
Q1:服务启动顺序导致依赖问题
解决方案:
docker-compose up -d mysql redis
sleep 30 # 等待数据库初始化
docker-compose up -d
Q2:端口冲突
检查占用情况:
netstat -tulnp | grep -E '18080|1935|6379|3306'
Q3:配置文件热更新
修改配置文件后无需重建容器:
docker-compose restart zlm
4.3 生产环境建议
-
使用
.env文件管理敏感信息:MYSQL_ROOT_PASSWORD=complex_password_123 REDIS_PASSWORD=another_secure_pass -
启用TLS加密通信
-
配置定期备份策略
-
实现监控告警系统
5. 进阶扩展方案
5.1 集群化部署
通过修改
docker-compose.yml
实现水平扩展:
zlm:
deploy:
replicas: 3
5.2 CI/CD集成示例
.gitlab-ci.yml
片段:
deploy:
stage: deploy
script:
- docker-compose -f docker-compose.prod.yml up -d --build
only:
- master
5.3 性能监控配置
Prometheus监控示例:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
配套的
prometheus.yml
配置:
scrape_configs:
- job_name: 'wvp'
static_configs:
- targets: ['zlm:8080', 'wvp-pro:18080']
更多推荐
所有评论(0)