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