Sobes.tech
Senior

Jakie praktyki istnieją, aby zmniejszyć rozmiar obrazu Docker?

sobes.tech AI

Odpowiedź od AI

Aby zmniejszyć rozmiar obrazu Docker, stosuje się kilka praktyk:

  • Używanie minimalistycznych obrazów bazowych, np. alpine zamiast ubuntu.
  • Budowa wieloetapowa (multi-stage builds), gdzie w pierwszych etapach budowana jest aplikacja, a w końcowym obrazie pozostaje tylko minimalny runtime z zbudowanym binarkiem.
  • Czyszczenie pamięci podręcznych i plików tymczasowych po instalacji zależności w Dockerfile.
  • Łączenie poleceń RUN, aby zmniejszyć liczbę warstw.
  • Użycie .dockerignore do wykluczenia niepotrzebnych plików z kontekstu budowania.

Przykład wieloetapowego Dockerfile dla Go:

# Etap 1: Budowa
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Etap 2: Minimalny runtime
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]

Taka metoda pozwala uzyskać zwarty obraz z minimalnym zestawem plików.