Docker: 3-binary deployment (presentation, worker, playout) #13

Closed
opened 2026-07-12 05:49:33 +00:00 by GKaszewski · 0 comments
Owner

Parent

#2

What to build

Update the Docker deployment for the 3-binary architecture. Three containers: presentation (HTTP API), worker (background jobs), playout (HLS streaming). Shared SQLite volume for single-machine deployment.

Create Dockerfiles (or multi-stage builds) for each binary. Update compose.yml with three services. The playout service needs FFmpeg installed in its container image.

Env vars:

  • DATABASE_URL shared by all three (points to the shared SQLite file)
  • PLAYOUT_LISTEN_PORT for the playout HTTP server
  • SEGMENT_STORE_PATH for HLS segment storage

Acceptance criteria

  • docker compose up starts all three services
  • Presentation serves HTTP API on its configured port
  • Worker runs background jobs (auto-scheduler, library sync, webhook consumer, broadcast poller)
  • Playout serves HLS streams on its configured port
  • All three share the same SQLite database via a Docker volume
  • Playout container has FFmpeg installed
  • Images push to registry.gabrielkaszewski.dev with correct names
  • NEXT_PUBLIC_API_URL and NEXT_PUBLIC_PLAYOUT_URL baked into frontend image at build time

Blocked by

  • #9 (Playout Service core — binary must exist to containerize)
## Parent #2 ## What to build Update the Docker deployment for the 3-binary architecture. Three containers: presentation (HTTP API), worker (background jobs), playout (HLS streaming). Shared SQLite volume for single-machine deployment. Create Dockerfiles (or multi-stage builds) for each binary. Update compose.yml with three services. The playout service needs FFmpeg installed in its container image. Env vars: - `DATABASE_URL` shared by all three (points to the shared SQLite file) - `PLAYOUT_LISTEN_PORT` for the playout HTTP server - `SEGMENT_STORE_PATH` for HLS segment storage ## Acceptance criteria - [ ] `docker compose up` starts all three services - [ ] Presentation serves HTTP API on its configured port - [ ] Worker runs background jobs (auto-scheduler, library sync, webhook consumer, broadcast poller) - [ ] Playout serves HLS streams on its configured port - [ ] All three share the same SQLite database via a Docker volume - [ ] Playout container has FFmpeg installed - [ ] Images push to `registry.gabrielkaszewski.dev` with correct names - [ ] `NEXT_PUBLIC_API_URL` and `NEXT_PUBLIC_PLAYOUT_URL` baked into frontend image at build time ## Blocked by - #9 (Playout Service core — binary must exist to containerize)
GKaszewski added the ready-for-agent label 2026-07-12 05:49:33 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GKaszewski/k-tv#13