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"]