build(playout): compose wiring + .env knobs
- Add /mnt/NVME/MAM/wild-dragon-media:/media to mam-api (rw) and worker-p4 (rw); web-ui (ro, for serving HLS preview segments). - worker-p4 WORKER_QUEUES gains 'playout-stage' so master-tier nodes pick up the loudnorm stage jobs (they already have ffmpeg + the media mount). - New build-only 'playout' service with profile ["build-only"] so `docker compose --profile build-only build playout` produces the wild-dragon-playout:latest image without compose trying to up it as a long-running service. mam-api spawns these on demand. - mam-api env adds PLAYOUT_IMAGE + PLAYOUT_AMCP_BASE_PORT (5250 default). - .env.example: PLAYOUT_IMAGE, PLAYOUT_AMCP_BASE_PORT.
This commit is contained in:
parent
793011b78b
commit
d505a488ac
2 changed files with 23 additions and 1 deletions
|
|
@ -63,3 +63,10 @@ GOOGLE_ALLOWED_DOMAIN=
|
||||||
# Note: if a Google-linked account also has TOTP enabled, sign-in still requires
|
# 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
|
# the authenticator code (Google is treated as the first factor). Accounts without
|
||||||
# TOTP complete sign-in in one Google step.
|
# 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
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ services:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- /mnt/NVME/MAM/wild-dragon-live:/live
|
- /mnt/NVME/MAM/wild-dragon-live:/live
|
||||||
- /mnt/NVME/MAM/wild-dragon-growing:/growing
|
- /mnt/NVME/MAM/wild-dragon-growing:/growing
|
||||||
|
- /mnt/NVME/MAM/wild-dragon-media:/media
|
||||||
- /mnt/NVME/MAM/sdk:/sdk
|
- /mnt/NVME/MAM/sdk:/sdk
|
||||||
- /dev/shm:/dev/shm
|
- /dev/shm:/dev/shm
|
||||||
- /run/dbus:/run/dbus
|
- /run/dbus:/run/dbus
|
||||||
|
|
@ -61,6 +62,8 @@ services:
|
||||||
NODE_IP: ${NODE_IP}
|
NODE_IP: ${NODE_IP}
|
||||||
NODE_HOSTNAME: ${NODE_HOSTNAME:-}
|
NODE_HOSTNAME: ${NODE_HOSTNAME:-}
|
||||||
CAPTURE_TOKEN: ${CAPTURE_TOKEN}
|
CAPTURE_TOKEN: ${CAPTURE_TOKEN}
|
||||||
|
PLAYOUT_IMAGE: ${PLAYOUT_IMAGE:-wild-dragon-playout:latest}
|
||||||
|
PLAYOUT_AMCP_BASE_PORT: ${PLAYOUT_AMCP_BASE_PORT:-5250}
|
||||||
deploy:
|
deploy:
|
||||||
resources:
|
resources:
|
||||||
reservations:
|
reservations:
|
||||||
|
|
@ -120,14 +123,16 @@ services:
|
||||||
# after the capability-routing split, so import jobs sat unprocessed and
|
# after the capability-routing split, so import jobs sat unprocessed and
|
||||||
# assets stayed `ingesting` forever. import is concurrency-1 + network-
|
# assets stayed `ingesting` forever. import is concurrency-1 + network-
|
||||||
# bound, so one consumer (this heavy/primary worker) is sufficient.
|
# 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"
|
RUN_PROMOTION: "true"
|
||||||
PROXY_CONCURRENCY: "2"
|
PROXY_CONCURRENCY: "2"
|
||||||
|
PLAYOUT_MEDIA_DIR: /media
|
||||||
NVIDIA_VISIBLE_DEVICES: GPU-79afca3e-2ab2-a6ea-1c44-706c1f0a26d6
|
NVIDIA_VISIBLE_DEVICES: GPU-79afca3e-2ab2-a6ea-1c44-706c1f0a26d6
|
||||||
WORKER_LABEL: "zampp1 / Tesla P4"
|
WORKER_LABEL: "zampp1 / Tesla P4"
|
||||||
NVIDIA_DRIVER_CAPABILITIES: video,compute,utility
|
NVIDIA_DRIVER_CAPABILITIES: video,compute,utility
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/NVME/MAM/wild-dragon-growing:/growing
|
- /mnt/NVME/MAM/wild-dragon-growing:/growing
|
||||||
|
- /mnt/NVME/MAM/wild-dragon-media:/media
|
||||||
networks:
|
networks:
|
||||||
- wild-dragon
|
- wild-dragon
|
||||||
|
|
||||||
|
|
@ -176,12 +181,22 @@ services:
|
||||||
- "${PORT_WEB_UI:-7434}:80"
|
- "${PORT_WEB_UI:-7434}:80"
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/NVME/MAM/wild-dragon-live:/live
|
- /mnt/NVME/MAM/wild-dragon-live:/live
|
||||||
|
- /mnt/NVME/MAM/wild-dragon-media:/media:ro
|
||||||
- /dev/shm:/dev/shm
|
- /dev/shm:/dev/shm
|
||||||
- /run/dbus:/run/dbus
|
- /run/dbus:/run/dbus
|
||||||
- /run/systemd:/run/systemd
|
- /run/systemd:/run/systemd
|
||||||
networks:
|
networks:
|
||||||
- wild-dragon
|
- 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:
|
volumes:
|
||||||
postgres_data:
|
postgres_data:
|
||||||
redis_data:
|
redis_data:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue