Sobes.tech
Junior — Middle

In quali casi è consigliabile utilizzare una build Docker multi-stage e come questo aiuta a ottimizzare il processo?

sobes.tech AI

Risposta dell'AI

Si consiglia la compilazione multi-stage di Docker quando si desidera creare un'immagine compatta e ottimizzata, separando le fasi di compilazione e di esecuzione dell'applicazione. Ad esempio, nella prima fase si compila l'applicazione con tutti gli strumenti e le dipendenze necessari, e nella seconda si crea un'immagine minima, a cui vengono copiati solo gli artefatti compilati.

Questo aiuta a:

  • ridurre la dimensione dell'immagine finale, escludendo file e strumenti di compilazione non necessari;
  • aumentare la sicurezza, poiché nell'immagine finale non ci sono strumenti di sviluppo;
  • accelerare il deployment e l'avvio dei container.

Esempio di Dockerfile con compilazione multi-stage:

# Fase di compilazione
FROM maven:3.8-jdk-11 AS builder
WORKDIR /app
COPY . .
RUN mvn clean package

# Fase di esecuzione
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=builder /app/target/myapp.jar ./
CMD ["java", "-jar", "myapp.jar"]