Docker & DevOps Fundamentals · Lezione

Build multi-stage e immagini più piccole

Impari come i Dockerfile multi-stage consentano di distribuire immagini di produzione leggere separando gli strumenti di build dal runtime finale e riducendo drasticamente le dimensioni dell'immagine.

Lezione 4 di 413 passaggi

Build multi-stage e immagini più piccole è una lezione Docker & DevOps Fundamentals gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Docker & DevOps Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.

Perché le dimensioni dell'immagine sono importanti

Le immagini di grandi dimensioni sono lente da creare, inviare e scaricare e presentano una superficie di attacco maggiore. Un buon obiettivo ingegneristico è distribuire la più piccola immagine che esegua comunque l'applicazione.

Il problema dell'eccesso di contenuti

La compilazione di un'applicazione richiede spesso compilatori, dipendenze di sviluppo e strumenti di build. Se questi elementi finiscono nell'immagine finale, ne aumentano notevolmente le dimensioni, anche se l'applicazione in esecuzione non ne ha bisogno.

Che cos'è una build multi-stage?

Una build multi-stage usa diverse istruzioni FROM in un unico Dockerfile. Le fasi iniziali compilano l'applicazione; la fase finale copia solo gli artefatti completati, lasciando indietro gli strumenti di build.

Assegnazione del nome a una fase

Assegni un nome a una fase con AS, in modo che le fasi successive possano farvi riferimento.

FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci

Compilazione nella prima fase

La fase di build compila o raggruppa l'applicazione. In questa fase sono disponibili tutte le dipendenze di sviluppo e gli strumenti necessari.

COPY . .
RUN npm run build

Una fase finale essenziale

Avvii la fase finale da un'immagine di base minimale, quindi copi solo ciò che serve all'applicazione per funzionare usando COPY --from.

FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules

Dockerfile multi-stage completo

Combinando le fasi si ottiene un'immagine finale di piccole dimensioni, che contiene l'applicazione compilata ma nessuno degli strumenti usati per la build.

FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ['node', 'dist/main.js']

Scelta di un'immagine di base di piccole dimensioni

L'immagine di base è spesso il fattore più importante. Le varianti Slim e Alpine riducono notevolmente le dimensioni delle immagini:

  • node:20 ~ grande
  • node:20-slim ~ molto più piccola
  • node:20-alpine ~ la più piccola, con librerie minime

Solo dipendenze di produzione

Eviti le dipendenze di sviluppo nell'immagine di runtime. L'installazione con il flag di produzione esclude i pacchetti di test e di build.

RUN npm ci --omit=dev

Uso di .dockerignore

Un file .dockerignore esclude i contenuti superflui dal contesto di build, velocizzando le build ed evitando la copia accidentale di segreti o cartelle molto grandi.

node_modules
.git
.env
Dockerfile
*.log

Misurazione del risultato

Verifichi il risultato controllando le dimensioni delle immagini. Un'immagine multi-stage ben realizzata può essere molto più piccola di una semplice immagine a fase singola.

docker images myapp

Verifica rapida

Verifichi la sua conoscenza delle build multi-stage.

Riepilogo

Ha imparato a distribuire immagini Docker essenziali:

  • Le build multi-stage usano più fasi FROM in un unico Dockerfile
  • Compili in una fase iniziale, quindi usi COPY --from per copiare solo gli artefatti in una fase finale slim
  • Scelga immagini di base di piccole dimensioni (slim/Alpine) e installi solo le dipendenze di produzione
  • Usi .dockerignore per ridurre il contesto di build

Le immagini più piccole vengono compilate più rapidamente, distribuite più velocemente e sono più sicure.

Gratis per iniziare

Impara Docker & DevOps Fundamentals con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
12
Lezioni
48

Domande Frequenti

La lezione «Build multi-stage e immagini più piccole» è gratuita?

Sì — il testo completo di «Build multi-stage e immagini più piccole» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Docker & DevOps Fundamentals, passa a CoddyKit PRO. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.

Cosa imparerò in «Build multi-stage e immagini più piccole»?

Impari come i Dockerfile multi-stage consentano di distribuire immagini di produzione leggere separando gli strumenti di build dal runtime finale e riducendo drasticamente le dimensioni dell'immagine. Eserciti Docker & DevOps Fundamentals con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Docker & DevOps Fundamentals?

Non è richiesta alcuna esperienza precedente. Docker & DevOps Fundamentals su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Build multi-stage e immagini più piccole»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Docker & DevOps Fundamentals?

Sì. Ogni lezione Docker & DevOps Fundamentals include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Comprendere i Dockerfile
  2. Creazione di immagini Docker personalizzate
  3. Livelli e ottimizzazione delle immagini
  4. Build multi-stage e immagini più piccole
← Torna a Docker & DevOps Fundamentals