Sobes.tech
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, και στη συνέχεια, στην τελική εικόνα, αντιγράφεται μόνο το μεταγλωττισμένο εκτελέσιμο, χωρίς τα αρχεία πηγαίου κώδικα και τα εργαλεία κατασκευής.