# Testbilde for announcer. Ikke ment for produksjon – på en ekte maskin
# kjører appen nativt med install.sh, fordi lyden skal ut på maskinens egen
# lydutgang og det er vondt å få til gjennom et containerlag.
#
# Her er poenget å kunne prøve innlogging (PIN, JWT, OIDC) uten å røre
# tjenesten som kjører, og uten sudo eller brannmurendringer.
FROM python:3.13-slim

# ffmpeg trengs av edge_pcm() og av egne jinglefiler. pw-play/paplay er bare
# nyttig hvis vertens PipeWire-socket monteres inn; uten den feiler selve
# avspillingen, men resten av appen virker.
RUN apt-get update \
 && apt-get install -y --no-install-recommends ffmpeg ca-certificates curl \
 && (apt-get install -y --no-install-recommends pipewire-bin pulseaudio-utils || true) \
 && rm -rf /var/lib/apt/lists/*

COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv

# Venv utenfor /app: /app er et bind-mount av repoet, og en .venv bygget her
# ville ellers overskrevet den verten bruker til den kjørende tjenesten.
ENV UV_PROJECT_ENVIRONMENT=/opt/venv \
    UV_COMPILE_BYTECODE=1 \
    PATH=/opt/venv/bin:$PATH \
    PYTHONUNBUFFERED=1

WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen

EXPOSE 8090
CMD ["python", "announcer.py", "--host", "0.0.0.0", "--port", "8090"]
