99 lines
3.6 KiB
Markdown
99 lines
3.6 KiB
Markdown
|
|
整体架构
|
|||
|
|
这是一个基于 WVP-PRO(视频平台)+ ZLMediaKit(流媒体服务器)的视频监控系统,包含 5 个服务容器。
|
|||
|
|
服务详解
|
|||
|
|
1. polaris-redis (缓存服务)
|
|||
|
|
镜像: redis:latest
|
|||
|
|
重启策略: unless-stopped - 除非手动停止,否则总是重启
|
|||
|
|
健康检查: 每 15 秒执行 redis-cli incr ping,超时 5 秒,重试 10 次
|
|||
|
|
数据持久化:
|
|||
|
|
配置文件: ./redis/conf/redis.conf
|
|||
|
|
数据目录: ./volumes/redis/data/
|
|||
|
|
启用 AOF 持久化 (--appendonly yes)
|
|||
|
|
网络: 仅内部网络 media-net,端口 6379 未暴露到宿主机(安全考虑)
|
|||
|
|
|
|||
|
|
2. polaris-mysql (数据库服务)
|
|||
|
|
镜像: mysql:8
|
|||
|
|
数据库配置:
|
|||
|
|
数据库名: wvp
|
|||
|
|
root 密码: root ⚠️ 生产环境应修改
|
|||
|
|
业务用户: wvp_user / wvp_password
|
|||
|
|
初始化: 自动执行 ../数据库/2.7.4/初始化-mysql-2.7.4.sql
|
|||
|
|
优化参数:
|
|||
|
|
innodb-buffer-pool-size=80M - 内存池大小(较小,适合低配环境)
|
|||
|
|
character-set-server=utf8mb4 - 支持中文和 emoji
|
|||
|
|
lower-case-table-names=1 - 表名不区分大小写- default-time-zone=+8:00 - 东八区时区
|
|||
|
|
健康检查: TCP 连接测试 3306 端口
|
|||
|
|
|
|||
|
|
3. polaris-media (流媒体服务器)
|
|||
|
|
镜像: zlmediakit/zlmediakit:master
|
|||
|
|
核心功能: 处理视频流的接收和分发
|
|||
|
|
端口映射 (支持环境变量配置):
|
|||
|
|
10935 (RTMP) - 用于收流,TCP/UDP 双协议
|
|||
|
|
5540 (RTSP) - 用于收流,TCP/UDP 双协议
|
|||
|
|
10000 (RTP) - 用于收流,TCP/UDP 双协议
|
|||
|
|
HTTP/HTTPS 播流端口已注释(由 nginx 代理)
|
|||
|
|
数据卷:
|
|||
|
|
录像存储: ./volumes/video
|
|||
|
|
日志: ./logs/media
|
|||
|
|
配置: ./media/config.ini
|
|||
|
|
启动参数: -c /conf/config.ini -l 0 (日志级别 0)
|
|||
|
|
|
|||
|
|
4. polaris-wvp (WVP 视频平台核心)
|
|||
|
|
构建方式: 从 ./docker/wvp/Dockerfile 构建
|
|||
|
|
端口:
|
|||
|
|
18978 - WVP Web 管理端口
|
|||
|
|
8116 (默认) - SIP 信令端口,TCP/UDP
|
|||
|
|
依赖服务: redis、mysql、media(启动顺序)
|
|||
|
|
关键环境变量:
|
|||
|
|
Stream_IP - 流媒体访问 IP(外部访问地址)
|
|||
|
|
SDP_IP - SDP 协商使用的 IP
|
|||
|
|
ZLM_HOOK_HOST: polaris-wvp - ZLM 回调 WVP 的地址
|
|||
|
|
ZLM_HOST: polaris-media - WVP 访问 ZLM 的地址
|
|||
|
|
ZLM_SERCERT - ZLM 密钥 ⚠️ 生产环境应修改- SIP 配置: SIP_ShowIP, SIP_Port, SIP_Domain, SIP_Id, SIP_Password- 录像配置: RecordSip, RecordPushLive
|
|||
|
|
|
|||
|
|
5. polaris-nginx (反向代理)
|
|||
|
|
构建方式: 从 ./docker/nginx/Dockerfile 构建
|
|||
|
|
端口: 8080 (默认) - 对外提供 Web 服务
|
|||
|
|
依赖: polaris-wvp
|
|||
|
|
功能:
|
|||
|
|
代理 WVP 管理界面
|
|||
|
|
代理流媒体播放地址(替代直接暴露 ZLM 端口)
|
|||
|
|
配置: 使用模板 ./nginx/templates/
|
|||
|
|
网络架构
|
|||
|
|
media-net (bridge 网络)
|
|||
|
|
├── polaris-redis (内部)
|
|||
|
|
├── polaris-mysql (内部)
|
|||
|
|
├── polaris-media (暴露流媒体端口)
|
|||
|
|
├── polaris-wvp (暴露 18978 和 SIP 端口)
|
|||
|
|
└── polaris-nginx (暴露 8080 Web 端口)
|
|||
|
|
|
|||
|
|
环境变量配置
|
|||
|
|
需要在 .env 文件或启动时配置: 必需变量:
|
|||
|
|
Stream_IP - 流媒体服务器外网 IP
|
|||
|
|
SDP_IP - SDP 协商 IP
|
|||
|
|
SIP_ShowIP - SIP 显示 IP
|
|||
|
|
SIP_Domain - SIP 域
|
|||
|
|
SIP_Id - SIP 服务器 ID
|
|||
|
|
SIP_Password - SIP 密码
|
|||
|
|
|
|||
|
|
可选变量 (有默认值):
|
|||
|
|
WebHttp=8080 - Web 端口
|
|||
|
|
MediaRtmp=10935 - RTMP 端口
|
|||
|
|
MediaRtsp=5540 - RTSP 端口
|
|||
|
|
MediaRtp=10000 - RTP 端口
|
|||
|
|
SIP_Port=8116 - SIP 端口
|
|||
|
|
|
|||
|
|
安全建议
|
|||
|
|
⚠️ 修改默认密码:
|
|||
|
|
MySQL root 密码 (第 36 行)
|
|||
|
|
ZLM 密钥 (第 110 行)
|
|||
|
|
⚠️ 生产环境不要暴露数据库端口 (第 40-41 行已注释,保持)
|
|||
|
|
⚠️ 流媒体 HTTP/HTTPS 端口通过 nginx 代理 (第 62-63 行已注释,正确)
|
|||
|
|
考虑使用 Docker secrets 管理敏感信息
|
|||
|
|
|
|||
|
|
数据持久化
|
|||
|
|
所有重要数据都已挂载到宿主机:
|
|||
|
|
Redis 数据: ./volumes/redis/data/
|
|||
|
|
MySQL 数据: ./volumes/mysql/data/
|
|||
|
|
视频录像: ./volumes/video/
|
|||
|
|
日志文件: ./logs/
|