Sobes.tech
Middle

Qu'est-ce que les builds multi-étapes dans Docker et comment fonctionnent-ils?

sobes.tech IA

Réponse de l'IA

Les constructions multi-étapes permettent d’utiliser plusieurs images temporaires lors du processus de construction Docker pour obtenir une image finale optimisée.

Comment cela fonctionne :

  • Division en étapes : Le processus de construction est divisé en plusieurs étapes (FROM), chacune héritant de sa propre image de base.
  • Copie d’artefacts : Les fichiers et artefacts créés lors des étapes précédentes sont copiés dans les suivantes à l’aide de la commande COPY --from=<nom_étape ou numéro>.
  • Image finale : L’image finale est créée à partir de la dernière étape. Seuls les fichiers explicitement copiés depuis les étapes précédentes y sont inclus. Les couches intermédiaires et les outils utilisés dans les premières étapes pour la compilation ou les tests ne sont pas inclus dans l’image finale.

Avantages :

  • Réduction de la taille de l’image : Seuls les fichiers nécessaires pour exécuter l’application sont inclus dans l’image finale.
  • Amélioration de la sécurité : Les outils de construction, compilateurs et autres composants potentiellement vulnérables ne sont pas inclus dans l’image finale.
  • Accélération de la construction : Les étapes intermédiaires peuvent être mises en cache.
  • Clarté du Dockerfile : Les différentes étapes de construction (compilation, test, empaquetage) sont logiquement séparées.

Exemple :

# Étape de build : compilation de l’application
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .

# Étape de run : exécution de l’application
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]