Sobes.tech
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"]

Αυτή η προσέγγιση επιτρέπει την απόκτηση μιας συμπαγούς εικόνας με το ελάχιστο σύνολο αρχείων.