refactor(nginx): streams are separated by key

This commit is contained in:
2026-05-17 22:05:29 +01:00
parent 781aecbc09
commit 6230259582
4 changed files with 41 additions and 13 deletions

View File

@@ -12,3 +12,5 @@ MEDIA_DATA=
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
POSTGRES_DB=vodSystem
FRONTEND_URL=

View File

@@ -1,10 +1,32 @@
services:
rtmp:
extends:
file: docker-compose.yml
service: rtmp
# Local dev: only infrastructure services
# Backend and frontend run directly on the host
# Usage: docker compose -f docker-compose.dev.yml up
services:
postgres:
extends:
file: docker-compose.yml
service: postgres
image: postgres:15
container_name: vod_postgres
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ${POSTGRES_DATA}:/var/lib/postgresql/data
ports:
- "5432:5432"
rtmp:
build:
context: ./nginx
dockerfile: Dockerfile
container_name: vod_rtmp
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- WEB_SERVER_URL=http://host.docker.internal:8080
ports:
- "1935:1935"
volumes:
- ${STREAM_DATA}:/stream
pull_policy: build
restart: unless-stopped

View File

@@ -21,7 +21,6 @@ services:
env_file:
- .env
environment:
FRONTEND_URL: http://localhost:5173
SPRING_PROFILES_ACTIVE: dev
MEDIA_DATA: /app/data/media
volumes:
@@ -49,8 +48,11 @@ services:
context: ./nginx
dockerfile: Dockerfile
container_name: vod_rtmp
environment:
- WEB_SERVER_URL=http://backend:8080
ports:
- "1935:1935"
volumes:
- ${STREAM_DATA}:/stream
pull_policy: build
restart: unless-stopped

View File

@@ -16,9 +16,11 @@ rtmp {
allow play all;
hls on;
hls_path /tmp/hls;
hls_nested on;
hls_path /stream;
hls_fragment_naming system;
hls_fragment 3;
hls_playlist_length 60;
hls_playlist_length 28800;
}
}
}
@@ -33,7 +35,7 @@ http {
application/vnd.apple.mpegurl m3u8; # proper MIME for HLS playlists
video/mp2t ts; # MPEG-TS segment MIME
}
root /tmp;
root /stream;
add_header Cache-Control no-cache; # prevent stale segments
add_header Access-Control-Allow-Origin *; # CORS for browser playback
}