# 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"]