Blocco A · Fondamenta Docker — Modulo 3 di 16

Dockerfile avanzato

e hardening delle immagini

Obiettivi di oggi

Perché "piccolo" = "sicuro"

Multi-stage: build separata dal runtime

FROM python:3.12-slim AS deps
COPY requirements.txt .
RUN pip install --prefix=/install -r requirements.txt

FROM python:3.12-slim          # stage finale PULITO
RUN useradd --create-home app
COPY --from=deps /install /usr/local
COPY app.py .
USER app                        # mai root
HEALTHCHECK CMD python -c "..."  # Docker sa se sono vivo
CMD ["gunicorn", "-b", "0.0.0.0:5000", "app:app"]

Le regole dell'Ente (nascono oggi)

Queste righe finiranno identiche nelle Linee guida e nel blueprint (M15).

Laboratorio (2h)

  1. Misura l'immagine del Modulo 2, poi riscrivi il Dockerfile: multi-stage, slim, non-root, healthcheck, gunicorn
  2. Confronto: dimensioni, whoami, stato (healthy) in docker ps

Riepilogo e prossimo passo