diff --git a/.env.example b/.env.example index 79f3be1..493f47f 100644 --- a/.env.example +++ b/.env.example @@ -63,3 +63,10 @@ GOOGLE_ALLOWED_DOMAIN= # Note: if a Google-linked account also has TOTP enabled, sign-in still requires # the authenticator code (Google is treated as the first factor). Accounts without # TOTP complete sign-in in one Google step. + +# Playout / Master Control (MCR) +# Image tag the mam-api spawns when a channel starts. Build with: +# docker compose --profile build-only build playout +PLAYOUT_IMAGE=wild-dragon-playout:latest +# Base AMCP port — each channel binds to BASE + channel_id (in CasparCG terms). +PLAYOUT_AMCP_BASE_PORT=5250 diff --git a/docker-compose.yml b/docker-compose.yml index fce5ffb..3e66986 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -40,6 +40,7 @@ services: - /var/run/docker.sock:/var/run/docker.sock - /mnt/NVME/MAM/wild-dragon-live:/live - /mnt/NVME/MAM/wild-dragon-growing:/growing + - /mnt/NVME/MAM/wild-dragon-media:/media - /mnt/NVME/MAM/sdk:/sdk - /dev/shm:/dev/shm - /run/dbus:/run/dbus @@ -61,6 +62,8 @@ services: NODE_IP: ${NODE_IP} NODE_HOSTNAME: ${NODE_HOSTNAME:-} CAPTURE_TOKEN: ${CAPTURE_TOKEN} + PLAYOUT_IMAGE: ${PLAYOUT_IMAGE:-wild-dragon-playout:latest} + PLAYOUT_AMCP_BASE_PORT: ${PLAYOUT_AMCP_BASE_PORT:-5250} deploy: resources: reservations: @@ -120,14 +123,16 @@ services: # after the capability-routing split, so import jobs sat unprocessed and # assets stayed `ingesting` forever. import is concurrency-1 + network- # bound, so one consumer (this heavy/primary worker) is sufficient. - WORKER_QUEUES: proxy,conform,trim,import + WORKER_QUEUES: proxy,conform,trim,import,playout-stage RUN_PROMOTION: "true" PROXY_CONCURRENCY: "2" + PLAYOUT_MEDIA_DIR: /media NVIDIA_VISIBLE_DEVICES: GPU-79afca3e-2ab2-a6ea-1c44-706c1f0a26d6 WORKER_LABEL: "zampp1 / Tesla P4" NVIDIA_DRIVER_CAPABILITIES: video,compute,utility volumes: - /mnt/NVME/MAM/wild-dragon-growing:/growing + - /mnt/NVME/MAM/wild-dragon-media:/media networks: - wild-dragon @@ -176,12 +181,22 @@ services: - "${PORT_WEB_UI:-7434}:80" volumes: - /mnt/NVME/MAM/wild-dragon-live:/live + - /mnt/NVME/MAM/wild-dragon-media:/media:ro - /dev/shm:/dev/shm - /run/dbus:/run/dbus - /run/systemd:/run/systemd networks: - wild-dragon + # Build-only: the CasparCG sidecar image. mam-api spawns these on-demand per + # channel (one container per playout channel), so this service is never up'd — + # it exists so `docker compose build playout` produces the image the API tags + # via PLAYOUT_IMAGE. Profile excludes it from default `up`. + playout: + profiles: ["build-only"] + build: ./services/playout + image: wild-dragon-playout:latest + volumes: postgres_data: redis_data: