Torna al blog
DockerDevOpsContainer

Docker: multi-stage build per immagini leggere

MUSTNODE SRL6 min di lettura

Immagini piu piccole, deploy piu veloci

Un errore comune con Docker e produrre immagini enormi che includono compilatori, dipendenze di sviluppo e file inutili. I multi-stage build risolvono il problema separando la fase di build da quella di runtime.

Il principio

Si usano piu istruzioni FROM nello stesso Dockerfile. In uno stage si compila l'applicazione con tutti gli strumenti necessari; nello stage finale si copia solo l'artefatto prodotto, partendo da un'immagine base minimale.

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

# Stage 2: runtime leggero
FROM node:20-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
CMD ["node", "dist/server.js"]

I benefici

  • Immagini molto piu piccole: niente toolchain di build nel runtime.
  • Deploy piu rapidi: meno dati da trasferire.
  • Superficie d'attacco ridotta: meno software, meno vulnerabilita.

Un consiglio in piu

Aggiungi un file .dockerignore per escludere node_modules, log e file temporanei dal contesto di build: velocizza ulteriormente la creazione dell'immagine.

In MUSTNODE adottiamo i multi-stage build per consegnare container leggeri, sicuri e veloci da distribuire.

Articoli correlati

Altri approfondimenti dalla categoria Cloud & DevOps.