Junior — Middle
Πώς υλοποιείτε μια πολύ-στάδια κατασκευή μιας εικόνας κοντέινερ;
sobes.tech AI
Απάντηση από AI
Η πολύ-στάδια κατασκευή (multi-stage build) στο Docker επιτρέπει τη δημιουργία πολλαπλών σταδίων κατασκευής σε ένα Dockerfile, βοηθώντας στη μείωση του μεγέθους της τελικής εικόνας και διαχωρίζοντας τα στάδια σύνταξης από το στάδιο εκτέλεσης.
Η βασική ιδέα είναι να χρησιμοποιούνται πολλαπλές εντολές FROM σε ένα Dockerfile, όπου κάθε στάδιο μπορεί να χρησιμοποιεί τα αρχεία των προηγούμενων σταδίων.
Παράδειγμα:
# Στάδιο κατασκευής
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# Τελικό στάδιο εικόνας
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
Εδώ, αρχικά κατασκευάζεται η εφαρμογή σε Go, και στη συνέχεια, στην τελική εικόνα, αντιγράφεται μόνο το μεταγλωττισμένο εκτελέσιμο, χωρίς τα αρχεία πηγαίου κώδικα και τα εργαλεία κατασκευής.