- Dockerfile: dipendenze sistema libpango/libgdk-pixbuf/libcairo/shared-mime-info + fonts-dejavu per rendering WeasyPrint su debian slim - requirements: weasyprint==61.2 + pydyf==0.10.0 (vincolo compatibilita, weasyprint 62.x ha bug con pydyf 0.11 su stream.transform) + jinja2==3.1.3 - templates_jinja/verbale_istruttoria.html: layout A4 professionale con intestazione Gepafin, dati pratica, tabelle fatture raggruppate per categoria (dichiarato vs ammesso con motivazione rettifica), ULA, documenti, soccorsi istruttori, totali, checklist finale, note istruttore, blocco firma - routers/verbale: endpoint /verbale.html (debug preview) e /verbale.pdf (weasyprint on-the-fly) — solo ruoli istruttore/superadmin - main: include router verbale, version bump 0.3.0 Testato E2E: PDF 27KB generato su pratica UNDER_REVIEW, magic bytes PDF-1.7 OK.
23 lines
704 B
Docker
23 lines
704 B
Docker
FROM python:3.12-slim
|
|
|
|
WORKDIR /app
|
|
ENV TZ=Europe/Rome PYTHONUNBUFFERED=1
|
|
|
|
# Dipendenze sistema: weasyprint serve libpango, libgdk-pixbuf, libcairo,
|
|
# shared-mime-info per MIME detection, libffi per cffi, fonts-dejavu come fallback.
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libpango-1.0-0 libpangoft2-1.0-0 \
|
|
libgdk-pixbuf-2.0-0 libcairo2 \
|
|
libffi-dev shared-mime-info \
|
|
fonts-dejavu fonts-dejavu-core \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
COPY app/ ./app/
|
|
COPY scripts/ ./scripts/
|
|
|
|
EXPOSE 8000
|
|
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
|