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.
alpinezamiastubuntu. - 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
.dockerignoredo 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.