Sobes.tech
Middle

Τι είναι οι πολύ-στάδιες κατασκευές στο Docker και πώς λειτουργούν;

sobes.tech AI

Απάντηση από AI

Οι πολύ-σταδιακές κατασκευές επιτρέπουν τη χρήση πολλαπλών προσωρινών εικόνων κατά τη διαδικασία κατασκευής Docker για την απόκτηση μιας τελικής, βελτιστοποιημένης εικόνας.

Πώς λειτουργεί:

  • Διαίρεση σε στάδια: Η διαδικασία κατασκευής διαιρείται σε αρκετά στάδια (FROM), καθένα από τα οποία κληρονομεί από τη δική του βασική εικόνα.
  • Αντιγραφή αρχείων: Τα αρχεία και τα artefacts που δημιουργούνται σε προηγούμενα στάδια αντιγράφονται στα επόμενα με την εντολή COPY --from=<όνομα_σταδίου ή αριθμός>.
  • Τελική εικόνα: Η τελική εικόνα δημιουργείται με βάση το τελευταίο στάδιο. Περιλαμβάνει μόνο τα αρχεία που έχουν αντιγραφεί ρητά από προηγούμενα στάδια. Τα ενδιάμεσα στρώματα και τα εργαλεία που χρησιμοποιήθηκαν σε πρώιμα στάδια για μεταγλώττιση ή δοκιμές δεν περιλαμβάνονται στην τελική εικόνα.

Πλεονεκτήματα:

  • Μείωση μεγέθους εικόνας: Στην τελική εικόνα περιλαμβάνονται μόνο τα αρχεία που χρειάζονται για την εκτέλεση της εφαρμογής.
  • Βελτίωση ασφάλειας: Τα εργαλεία κατασκευής, οι μεταγλωττιστές και άλλα πιθανά ευάλωτα συστατικά δεν περιλαμβάνονται στην τελική εικόνα.
  • Ταχύτερη κατασκευή: Τα ενδιάμεσα στάδια μπορούν να αποθηκευτούν στην cache.
  • Καθαρότητα Dockerfile: Τα διάφορα στάδια κατασκευής (μεταγλώττιση, δοκιμές, συσκευασία) διαχωρίζονται λογικά.

Παράδειγμα:

# Στάδιο κατασκευής: Μεταγλώττιση της εφαρμογής
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .

# Στάδιο εκτέλεσης: Εκκίνηση της εφαρμογής
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]