From 6230259582521538ebf5aa8f857df0bbc9fba5c3 Mon Sep 17 00:00:00 2001 From: Dylan De Faoite Date: Sun, 17 May 2026 22:05:29 +0100 Subject: [PATCH] refactor(nginx): streams are separated by key --- .env.example | 4 +++- docker-compose.dev.yml | 38 ++++++++++++++++++++++++++++++-------- docker-compose.yml | 4 +++- nginx/nginx.conf | 8 +++++--- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/.env.example b/.env.example index 58218bf..b1f5962 100644 --- a/.env.example +++ b/.env.example @@ -11,4 +11,6 @@ MEDIA_DATA= # DB Credentials POSTGRES_USER=myuser POSTGRES_PASSWORD=mypassword -POSTGRES_DB=vodSystem \ No newline at end of file +POSTGRES_DB=vodSystem + +FRONTEND_URL= \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 9b3f47c..6cc3fbf 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -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 \ No newline at end of file + 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 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 6ce165e..43a2032 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/nginx/nginx.conf b/nginx/nginx.conf index bf0c004..0f3144a 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -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 }