stream-deploy/reademe/docker-compose.md

99 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

整体架构
这是一个基于 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/