FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 SAKURA_DATA=/data TZ=Europe/Berlin
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates tzdata && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY server/requirements.txt /app/server/requirements.txt
RUN pip install --no-cache-dir -r /app/server/requirements.txt
COPY server /app/server
COPY dist /app/dist
COPY README.md START-HIER.md LICENSE NOTICE /app/
COPY Dockerfile compose.yaml VERIFICATION.md /app/
COPY deploy /app/deploy
COPY tests /app/tests
RUN python -c "import pathlib,zipfile; root=pathlib.Path('/app'); z=zipfile.ZipFile(root/'dist/source.zip','w',zipfile.ZIP_DEFLATED); [z.write(p,str(p.relative_to(root))) for p in root.rglob('*') if p.is_file() and p.name != 'source.zip' and '__pycache__' not in p.parts]; z.close()"
RUN useradd --uid 10001 --create-home sakura && mkdir -p /data && chown sakura:sakura /data
USER sakura
WORKDIR /app/server
EXPOSE 8080
CMD ["uvicorn","app:app","--host","0.0.0.0","--port","8080","--workers","1","--no-access-log","--proxy-headers","--forwarded-allow-ips=*"]
