docker: 3-binary deployment (presentation, worker, playout)

This commit is contained in:
2026-07-12 14:56:09 +02:00
parent a7fa2ec4aa
commit 711f0e4411
3 changed files with 90 additions and 58 deletions

View File

@@ -1,31 +1,30 @@
FROM rust:1.92 AS builder
WORKDIR /app
COPY . .
RUN cargo build --release -p presentation -p worker -p playout
# Build the release binary
RUN cargo build --release -p api
FROM debian:bookworm-slim
# Presentation image
FROM debian:bookworm-slim AS presentation
WORKDIR /app
# Install OpenSSL, CA certs, and ffmpeg (provides ffprobe for local-files duration scanning)
RUN apt-get update && apt-get install -y --no-install-recommends \
libssl3 \
ca-certificates \
ffmpeg \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/api .
# Create data directory for SQLite
RUN apt-get update && apt-get install -y --no-install-recommends libssl3 ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/k-tv .
RUN mkdir -p /app/data
ENV DATABASE_URL=sqlite:///app/data/template.db
ENV SESSION_SECRET=supersecretchangeinproduction
EXPOSE 3000
CMD ["./k-tv"]
CMD ["./api"]
# Worker image
FROM debian:bookworm-slim AS worker
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends libssl3 ca-certificates ffmpeg && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/k-tv-worker .
RUN mkdir -p /app/data
CMD ["./k-tv-worker"]
# Playout image
FROM debian:bookworm-slim AS playout
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends libssl3 ca-certificates ffmpeg && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/k-tv-playout .
RUN mkdir -p /app/data /tmp/k-tv-playout
EXPOSE 9090
CMD ["./k-tv-playout"]