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