Files
wvp-platform/docker/docker-compose.yml
16337 0afb3c42a4 适配Docker部署环境,修复拉流代理播放失败问题
1. Docker环境适配:
   - Dockerfile基础镜像从JDK11升级为eclipse-temurin:21
   - pom.xml编译版本从Java21降为Java17
   - docker-compose开放Redis(6379)、MySQL(3306)、ZLM(6080)端口映射
   - application.yml激活profile改为dev
   - application-dev.yml适配Docker服务连接参数(Redis/MySQL/ZLM)

2. 修复拉流代理播放失败:
   - Nginx添加流媒体后缀代理规则(.flv/.m3u8/.ts等),支持自定义app名的流路径
   - Nginx添加WebRTC API代理规则
   - Nginx添加sub_filter规则,将API返回的流地址端口从80(ZLM容器内部端口)重写为8080(Nginx对外端口)
   - docker-compose向Nginx容器传递WebHttp环境变量

3. ZLMediaKit配置补充onvif和rtc相关配置段

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 11:10:06 +08:00

157 lines
4.8 KiB
YAML
Raw 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.

version: '3'
services:
polaris-redis:
image: redis:latest # 使用官方Redis镜像
restart: unless-stopped
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
interval: 15s
timeout: 5s
retries: 10
start_period: 10s
networks:
- media-net
ports:
- 6379:6379
volumes:
- ./redis/conf/redis.conf:/opt/polaris/redis/redis.conf
- ./volumes/redis/data/:/data
environment:
TZ: "Asia/Shanghai"
command: redis-server /opt/polaris/redis/redis.conf --appendonly yes
polaris-mysql:
image: mysql:8 # 使用官方MySQL 8镜像
restart: unless-stopped
healthcheck:
test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306" ]
interval: 15s
timeout: 5s
retries: 10
start_period: 10s
networks:
- media-net
environment:
MYSQL_DATABASE: wvp
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: wvp_user
MYSQL_PASSWORD: wvp_password
TZ: Asia/Shanghai
ports:
- 3306:3306
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./logs/mysql:/logs
- ./volumes/mysql/data:/var/lib/mysql
- ../数据库/2.7.4/初始化-mysql-2.7.4.sql:/docker-entrypoint-initdb.d/init.sql # 初始化SQL脚本目录
command: [
# '--default-authentication-plugin=mysql_native_password',
'--innodb-buffer-pool-size=80M',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_general_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
polaris-media:
image: zlmediakit/zlmediakit:master # 替换为官方镜像
restart: always
networks:
- media-net
ports:
- "6080:80/tcp" # [播流]HTTP
#- "4443:443/tcp" # [播流]HTTPS 安全考虑-非测试阶段需要注释掉改为由nginx代理播流地址
- "${MediaRtmp:-10935}:${MediaRtmp:-10935}/tcp" # [收流]RTMP
- "${MediaRtmp:-10935}:${MediaRtmp:-10935}/udp" # [收流]RTMP
#- "41935:41935/tcp" # [收流]RTMPS 无效
- "${MediaRtsp:-5540}:${MediaRtsp:-5540}/tcp" # [收流]RTSP
- "${MediaRtsp:-5540}:${MediaRtsp:-5540}/udp" # [收流]RTSP
#- "45540:45540/tcp" # [收流]RTSPS 无效
- "${MediaRtp:-10000}:${MediaRtp:-10000}/tcp" # [收流]RTP
- "${MediaRtp:-10000}:${MediaRtp:-10000}/udp" # [收流]RTP
volumes:
- ./volumes/video:/opt/media/bin/www/record/
- ./logs/media:/opt/media/log/
- ./media/config.ini:/conf/config.ini
command: [
'MediaServer',
'-c', '/conf/config.ini',
'-l', '0'
]
polaris-wvp:
# 显式指定构建上下文和Dockerfile路径
build:
context: .. # 构建上下文的根路径
dockerfile: ./docker/wvp/Dockerfile # 相对于上下文路径的Dockerfile位置
restart: always
networks:
- media-net
ports:
- "18978:18978"
- "${SIP_Port:-8116}:${SIP_Port:-8116}/udp"
- "${SIP_Port:-8116}:${SIP_Port:-8116}/tcp"
depends_on:
- polaris-redis
- polaris-mysql
- polaris-media
volumes:
- ./wvp/config:/opt/wvp/config
- ./wvp/wvp/:/opt/ylcx/wvp/
- ./logs/wvp:/opt/wvp/logs/
environment:
TZ: "Asia/Shanghai"
# 流链接的IP
Stream_IP: ${Stream_IP}
# SDP里的IP
SDP_IP: ${SDP_IP}
# [可选] zlm服务器访问WVP所使用的IP, 默认使用127.0.0.1zlm和wvp没有部署在同一台服务器时必须配置
ZLM_HOOK_HOST: polaris-wvp
ZLM_HOST: polaris-media
ZLM_SERCERT: su6TiedN2rVAmBbIDX0aa0QTiBJLBdcf
MediaHttp: ${WebHttp:-8080}
#MediaHttps: ${WebHttps:-8081}
MediaRtmp: ${MediaRtmp:-10935}
MediaRtsp: ${MediaRtsp:-5540}
MediaRtp: ${MediaRtp:-10000}
REDIS_HOST: polaris-redis
REDIS_PORT: 6379
DATABASE_HOST: polaris-mysql
DATABASE_PORT: 3306
DATABASE_USER: wvp_user
DATABASE_PASSWORD: wvp_password
SIP_ShowIP: ${SIP_ShowIP}
SIP_Port: ${SIP_Port:-8116}
SIP_Domain: ${SIP_Domain}
SIP_Id: ${SIP_Id}
SIP_Password: ${SIP_Password}
RecordSip: ${RecordSip}
RecordPushLive: ${RecordPushLive}
polaris-nginx:
# 显式指定构建上下文和Dockerfile路径
build:
context: .. # 构建上下文的根路径
dockerfile: ./docker/nginx/Dockerfile # 相对于上下文路径的Dockerfile位置
ports:
- "${WebHttp:-8080}:8080"
depends_on:
- polaris-wvp
volumes:
- ./nginx/templates/:/etc/nginx/templates
- ./logs/nginx:/var/log/nginx
environment:
# 流链接的IP
Stream_IP: ${Stream_IP}
WebHttp: ${WebHttp:-8080}
networks:
- media-net
networks:
media-net:
driver: bridge