2309e9f43a
Five-service streaming platform: auth, catalogue, streaming, ingest, thumbnailer. Includes React frontend served by nginx, NATS JetStream event bus, aiobotocore async S3, PyAV video metadata + thumbnail extraction, service-to-service JWT auth, and a full unit + e2e test suite.
32 lines
1.1 KiB
Docker
32 lines
1.1 KiB
Docker
# syntax=docker/dockerfile:1.4
|
|
ARG SERVICE=streaming
|
|
|
|
# ── Stage 1: Build ────────────────────────────────────────────────────────────
|
|
FROM git.unkin.net/unkin/almalinux9-base:20260308 AS builder
|
|
|
|
RUN dnf install -y jellyfin-ffmpeg-bin && dnf clean all
|
|
|
|
WORKDIR /app
|
|
COPY pyproject.toml uv.lock* ./
|
|
COPY src/ src/
|
|
RUN uv sync --frozen --no-dev --python 3.12
|
|
|
|
# ── Stage 2: Runtime ──────────────────────────────────────────────────────────
|
|
FROM git.unkin.net/unkin/almalinux9-base:20260308 AS runtime
|
|
|
|
RUN dnf install -y jellyfin-ffmpeg-bin && dnf clean all
|
|
|
|
WORKDIR /app
|
|
COPY --from=builder /app/.venv /app/.venv
|
|
COPY --from=builder /app/src /app/src
|
|
|
|
ARG SERVICE=streaming
|
|
ENV SERVICE=${SERVICE} \
|
|
PATH="/app/.venv/bin:$PATH" \
|
|
PYTHONPATH="/app/src"
|
|
|
|
EXPOSE 8000
|
|
|
|
COPY --chmod=755 scripts/entrypoint.sh /entrypoint.sh
|
|
ENTRYPOINT ["/entrypoint.sh"]
|