- FastAPI + SQLite, serverseitig gerenderte Templates, mobil-zuerst - Admin-Passwort, einseitige Ausschlüsse, eingefrorene Auslosung - Teilnehmer sehen Ergebnis per Cookie; Einmal-Recovery-Links bei Verlust - Docker/podman-tauglich (Entrypoint mit Privilegien-Drop, SELinux-:z) - Unit-Tests für Auslosung, E2E-Testskript (30 Checks)
21 lines
373 B
Docker
21 lines
373 B
Docker
FROM python:3.12-slim
|
|
|
|
WORKDIR /app
|
|
|
|
COPY requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
COPY app ./app
|
|
COPY entrypoint.sh ./entrypoint.sh
|
|
|
|
RUN chmod +x /app/entrypoint.sh \
|
|
&& useradd --create-home wichtel \
|
|
&& mkdir -p /data \
|
|
&& chown wichtel:wichtel /data
|
|
|
|
ENV WICHTELN_DATA_DIR=/data
|
|
|
|
EXPOSE 8000
|
|
|
|
ENTRYPOINT ["/app/entrypoint.sh"]
|