告别繁琐配置:手把手教你用 Docker 在 Windows 上部署 wvp-GB28181-pro 和 ZLMediaKit Windows 容器化部署指南wvp-GB28181-pro 与 ZLMediaKit 的黄金组合在流媒体服务领域GB28181-2016 标准已经成为视频监控互联互通的行业规范。传统部署方式往往需要面对复杂的依赖环境、繁琐的配置步骤和难以维护的系统架构。本文将介绍如何利用 Docker 容器技术在 Windows 平台上快速搭建一套完整的 wvp-GB28181-pro 信令服务和 ZLMediaKit 流媒体服务组合。1. 环境准备与基础概念1.1 为什么选择容器化部署传统部署方式面临三大痛点环境污染原生安装会向系统注入大量依赖可能导致版本冲突配置复杂需要手动处理多个组件的交互关系迁移困难环境难以复制无法保证开发与生产环境一致性容器化方案的优势对比特性传统部署容器化部署隔离性差优秀部署速度慢快资源占用高低可移植性差优秀版本管理困难简单1.2 系统要求确保您的 Windows 系统满足以下条件Windows 10/11 Pro/Enterprise 或 Windows Server 2016至少 8GB 内存推荐 16GB已启用 Hyper-V 和容器功能Docker Desktop 4.12 版本检查系统兼容性# 检查 Hyper-V 状态 Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V # 检查容器功能 Get-WindowsOptionalFeature -Online -FeatureName Containers2. Docker 环境配置2.1 安装 Docker Desktop从 Docker 官网下载最新稳定版安装包运行安装程序勾选以下选项Enable WSL 2 BackendAdd shortcut to desktop安装完成后重启系统验证安装docker --version docker-compose --version2.2 配置 Docker 资源右键系统托盘 Docker 图标选择 Settings在 Resources 选项卡中调整CPUs: ≥4Memory: ≥6GBSwap: 1GB提示流媒体服务对内存要求较高建议分配足够资源3. 容器化部署方案3.1 项目结构设计推荐的文件目录结构gb28181-stack/ ├── docker-compose.yml ├── zlm/ │ ├── config/ │ │ └── config.ini │ └── logs/ ├── wvp/ │ ├── application.yml │ └── logs/ └── mysql/ └── data/3.2 docker-compose 编排文件创建docker-compose.yml文件version: 3.8 services: zlm: image: zlmediakit/zlmediakit:latest container_name: zlmediakit restart: unless-stopped ports: - 1935:1935 # RTMP - 554:554 # RTSP - 9980:9980 # HTTP - 10000:10000 # RTP volumes: - ./zlm/config:/ZLMediaKit/conf - ./zlm/logs:/ZLMediaKit/log environment: - TZAsia/Shanghai mysql: image: mysql:5.7 container_name: gb28181-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: gb281812023 MYSQL_DATABASE: wvp volumes: - ./mysql/data:/var/lib/mysql ports: - 3306:3306 wvp: image: 648540858/wvp-pro:latest container_name: wvp-pro restart: unless-stopped depends_on: - mysql - zlm ports: - 9970:9970 # Web界面 - 9960:9960 # SIP信令 volumes: - ./wvp/application.yml:/wvp/application.yml - ./wvp/logs:/wvp/logs environment: - TZAsia/Shanghai3.3 配置文件定制ZLMediaKit 配置(zlm/config/config.ini)[http] port9980 rootPath/ZLMediaKit/www dirMenu1 [rtmp] port1935 [rtsp] port554 [hook] enable1 on_flow_reporthttp://wvp:9970/index/hook/on_flow_report on_http_accesshttp://wvp:9970/index/hook/on_http_access on_playhttp://wvp:9970/index/hook/on_play on_publishhttp://wvp:9970/index/hook/on_publish on_record_mp4http://wvp:9970/index/hook/on_record_mp4 on_rtsp_authhttp://wvp:9970/index/hook/on_rtsp_auth on_rtsp_realmhttp://wvp:9970/index/hook/on_rtsp_realm on_shell_loginhttp://wvp:9970/index/hook/on_shell_login on_stream_changedhttp://wvp:9970/index/hook/on_stream_changed on_stream_none_readerhttp://wvp:9970/index/hook/on_stream_none_reader on_stream_not_foundhttp://wvp:9970/index/hook/on_stream_not_foundwvp-GB28181-pro 配置(wvp/application.yml) 关键部分spring: datasource: url: jdbc:mysql://mysql:3306/wvp?useUnicodetruecharacterEncodingUTF8 username: root password: gb281812023 sip: ip: 0.0.0.0 port: 5060 domain: 3714810000 id: 3714810000200000001 media: ip: zlm http-port: 9980 secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc4. 系统启动与验证4.1 启动服务栈# 进入项目目录 cd gb28181-stack # 启动所有服务 docker-compose up -d观察日志确保各服务正常启动# 查看ZLM日志 docker logs -f zlmediakit # 查看WVP日志 docker logs -f wvp-pro4.2 系统验证访问http://localhost:9970进入Web界面使用默认账号 admin/admin 登录在媒体服务器页面确认 ZLMediaKit 连接状态测试国标设备接入流程常见问题排查命令# 检查容器运行状态 docker ps -a # 检查容器网络 docker network inspect gb28181-stack_default # 进入容器内部排查 docker exec -it zlmediakit bash5. 高级配置与优化5.1 性能调优建议对于生产环境建议调整以下参数ZLMediaKit 优化配置[general] flowThreshold2048 # 流量阈值 maxStreamWaitMS30000 # 等待流超时 [rtp] videoMtuSize1400 # 视频MTU大小 audioMtuSize600 # 音频MTU大小wvp-GB28181-pro JVM 参数在 docker-compose.yml 中为 wvp 服务添加environment: - JAVA_OPTS-Xms2g -Xmx4g -XX:UseG1GC5.2 安全加固措施修改默认密码MySQL root 密码wvp 管理员密码ZLM hook secret启用 HTTPS# 在ZLM配置中 [http] sslport443 sslCertificate/path/to/cert.pem sslKey/path/to/key.pem配置防火墙规则仅开放必要端口5060, 9980, 9970限制访问IP范围5.3 监控与维护推荐监控方案Prometheus Grafana监控系统资源使用情况ELK Stack集中日志管理健康检查端点ZLM:http://localhost:9980/index/api/getStatWVP:http://localhost:9970/index/hook/on_server_keepalive备份策略# 定期备份数据库 docker exec gb28181-mysql sh -c exec mysqldump -uroot -p$MYSQL_ROOT_PASSWORD wvp backup.sql # 备份配置文件 tar czvf config_backup.tar.gz zlm/config wvp/application.yml这套容器化部署方案在实际项目中表现出色特别是在多平台迁移和版本升级场景下。通过合理的资源配置和性能调优单节点可支持200路以上1080P视频流的稳定传输。