Dockerfile multi-stage e docker-compose pronti per la produzione

Crea un Dockerfile multi-stage sicuro e leggero e un docker-compose con database, cache e worker: utente non root, healthcheck, volumi e segreti fuori dall’immagine. Pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Include 4 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.

Intermedio · Codice · In attesa di revisione editoriale

Prompt

Agisci come ingegnere DevOps esperto nella containerizzazione di applicazioni in produzione.

Voglio containerizzare questa applicazione:
- Stack e comando di avvio: {{stack}}
- Servizi necessari: {{servizi}}
- Ambiente di destinazione: {{ambiente}}
- Architettura CPU dei server: {{piattaforma}}

Consegna:
1. Un `Dockerfile` multi-stage: dipendenze, build e uno stage di runtime minimo. Immagine base con versione fissata, buon uso della cache dei layer, utente non root, `WORKDIR`, `HEALTHCHECK`, gestione corretta dei segnali di arresto e nessuno strumento di compilazione nell’immagine finale.
2. Un `.dockerignore` adatto allo stack.
3. Un `docker-compose.yml` con tutti i servizi: reti, volumi con nome per i dati, `depends_on` con `condition: service_healthy`, un healthcheck per servizio, limiti di risorse sensati e politica di riavvio.
4. Variabili d’ambiente da un file `.env` (più un `.env.example` senza valori reali) e come passare i segreti senza includerli nell’immagine.
5. Se l’ambiente include lo sviluppo: un `compose.override.yml` con hot reload e porte di debug, separato dalla configurazione di produzione.
6. I comandi per build, avvio, log, migrazioni e build multipiattaforma se serve.
7. Una checklist su sicurezza e dimensioni: cosa verificare con uno scanner di vulnerabilità e come alleggerire l’immagine.

Vincoli:
- Aggiungi un breve commento a ogni istruzione non ovvia.
- Non inventare versioni delle dipendenze né nomi di variabili: segna ciò che non conosco con [DA COMPLETARE].
- Se il mio stack richiede una scelta (per esempio application server o raccolta dei file statici), chiedimelo prima.

Formato: un blocco di codice per file e una sezione finale con i comandi.

Come usarlo

  1. Indica come avvii oggi l’app in locale (comando esatto) e quali servizi usa.
  2. Scegli solo produzione oppure produzione più sviluppo.
  3. Costruisci l’immagine, controllane la dimensione e passala a uno scanner di vulnerabilità prima di pubblicarla.

Esempio d'uso

Stack: Django 5 con Gunicorn · Servizi: PostgreSQL 16, Redis e un worker Celery · Ambiente: entrambi · Piattaforma: linux/amd64.

Esempio di risultato

1. Dockerfile

# Fissa anche la patch o il digest: python:3.12.[DA COMPLETARE]-slim-bookworm
FROM python:3.12-slim-bookworm AS builder
WORKDIR /app
# Strumenti di compilazione solo in questo stage
RUN apt-get update && apt-get install -y --no-install-recommends build-essential libpq-dev \
    && rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
# Copiare prima le dipendenze sfrutta la cache dei layer
RUN pip wheel --no-cache-dir --wheel-dir /wheels -r requirements.txt

FROM python:3.12-slim-bookworm AS runtime
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
WORKDIR /app
# Solo la libreria client di PostgreSQL e un utente senza privilegi
RUN apt-get update && apt-get install -y --no-install-recommends libpq5 \
    && rm -rf /var/lib/apt/lists/* \
    && useradd --create-home --uid 10001 app
COPY --from=builder /wheels /wheels
RUN pip install --no-cache-dir /wheels/* && rm -rf /wheels
COPY --chown=app:app . .
USER app
EXPOSE 8000
# Serve un endpoint di salute: [DA COMPLETARE] il percorso
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
  CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/healthz/')"
# Forma exec: Gunicorn è il PID 1 e riceve SIGTERM direttamente
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "3"]

Il worker Celery riusa la stessa immagine in docker-compose.yml, cambiando solo il command.

Domanda prima di proseguire

Servi i file statici con WhiteNoise o da un nginx separato? Da questo dipende se collectstatic gira in fase di build o all’avvio…

Dati chiave

Categoria
Programmazione e sviluppo · DevOps
Tipo di output
Codice
Livello
Intermedio
Pensato per
ChatGPT, Claude, Gemini e Microsoft Copilot
Verificato in
In attesa di verifica editoriale
Variabili
Stack e avvio, Servizi necessari, Ambiente di destinazione e Architettura CPU
Lingua
Italiano
Prezzo
Gratuito, senza registrazione
Aggiornato
07/11/2026

Domande frequenti

Che vantaggio dà un Dockerfile multi-stage?

Separa la compilazione dall’esecuzione: l’immagine finale contiene solo ciò che serve all’app a runtime, quindi è più leggera ed espone una superficie d’attacco minore.

Perché non eseguire il container come root?

Se qualcuno sfrutta una vulnerabilità dell’app, un utente senza privilegi limita ciò che può fare nel container e riduce il rischio di arrivare all’host.

depends_on garantisce che il database sia pronto?

Solo con `condition: service_healthy` e un vero healthcheck sul database. Senza, Compose attende soltanto l’avvio del container.

A cosa serve questo prompt?

Crea un Dockerfile multi-stage sicuro e leggero e un docker-compose con database, cache e worker: utente non root, healthcheck, volumi e segreti fuori dall’immagine.

Con quali strumenti di IA funziona?

È pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.

Come personalizzo il prompt?

Clicca su «Personalizza» e compila le variabili (Stack e avvio, Servizi necessari, Ambiente di destinazione e Architettura CPU). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.

Serve esperienza per usarlo?

È di livello intermedio: conviene conoscere l'argomento per fornire un buon contesto e valutare il risultato con occhio critico.

Questo prompt è gratuito?

Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.

Posso fidarmi dell'output dell'IA?

Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.

Prompt correlati