保姆级教程:用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 系统资源需求建议部署主机满足以下配置资源类型最低要求推荐配置CPU2核4核内存4GB8GB磁盘20GB50GB系统Ubuntu 20.04Ubuntu 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-stopped2.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_URLjdbc:mysql://mysql:3306/wvp_db - SPRING_REDIS_HOSTredis 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: 1G3.3 日志管理方案推荐配置日志轮转和集中收集logging: driver: json-file options: max-size: 10m max-file: 34. 实战部署与运维4.1 一键启动与停止启动全部服务后台模式docker-compose up -d查看服务状态docker-compose ps停止服务并清理docker-compose down4.2 常见问题排查Q1服务启动顺序导致依赖问题解决方案docker-compose up -d mysql redis sleep 30 # 等待数据库初始化 docker-compose up -dQ2端口冲突检查占用情况netstat -tulnp | grep -E 18080|1935|6379|3306Q3配置文件热更新修改配置文件后无需重建容器docker-compose restart zlm4.3 生产环境建议使用.env文件管理敏感信息MYSQL_ROOT_PASSWORDcomplex_password_123 REDIS_PASSWORDanother_secure_pass启用TLS加密通信配置定期备份策略实现监控告警系统5. 进阶扩展方案5.1 集群化部署通过修改docker-compose.yml实现水平扩展zlm: deploy: replicas: 35.2 CI/CD集成示例.gitlab-ci.yml片段deploy: stage: deploy script: - docker-compose -f docker-compose.prod.yml up -d --build only: - master5.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]