Heim >Backend-Entwicklung >Golang >Wie kann ich Docker-Image-Builds optimieren, indem ich Abhängigkeiten vorab erstelle und Build-Caching verwende?
Abhängigkeiten vor dem Erstellen für schnellere Docker-Image-Erstellung
Das Erstellen von Docker-Images kann ein zeitaufwändiger Prozess sein, insbesondere wenn Abhängigkeiten erforderlich sind erstellt, bevor sie zwischengespeichert werden können. Um diesen Prozess zu optimieren, ist es möglich, alle erforderlichen Module vorab zu erstellen und zwischenzuspeichern.
Dockerfile-Struktur
Die empfohlene Dockerfile-Struktur, um dies zu erreichen, ist wie folgt:
FROM docker.io/golang:1.16.7-alpine AS build WORKDIR /src COPY go.* . RUN go mod download COPY . . RUN --mount=type=cache,target=/root/.cache/go-build go build -o /out/example . FROM scratch COPY --from=build /out/example /
Alternativ können Sie für einen einzelnen Architektur-Build die Docker-Datei vereinfachen auf:
FROM docker.io/golang:1.16.7-alpine AS build WORKDIR /src COPY go.* . RUN go mod download COPY . . RUN --mount=type=cache,target=/root/.cache/go-build go build -o /out/example . FROM scratch COPY --from=build /out/example /
Cache-Mounting
Der Schlüssel dazu Bei der Optimierung wird ein Cache-Verzeichnis unter /root/.cache/go-build bereitgestellt. Dies ist der Standardspeicherort für den Go-Build-Cache. Der erste Build füllt diesen Cache und nachfolgende Builds verwenden die zwischengespeicherten Dateien wieder, wodurch die Buildzeit erheblich verkürzt wird.
Build mit Docker BuildKit
Um diesen Caching-Mechanismus zu verwenden Tatsächlich müssen Sie mit aktiviertem Docker BuildKit erstellen. Sie können dies tun, indem Sie DOCKER_BUILDKIT=1 vor dem Erstellen des Images festlegen:
DOCKER_BUILDKIT=1 docker build -t myimage .
Alternativ können Sie Docker Buildx verwenden:
docker buildx build -t myimage .
Durch Voraberstellen und Zwischenspeichern von Abhängigkeiten können Sie dies tun Reduzieren Sie die Erstellungszeit von Docker-Images drastisch, insbesondere bei großen oder komplexen Projekten. Diese Optimierung kann während der Entwicklungs- und Bereitstellungsprozesse erhebliche Zeit einsparen.
Das obige ist der detaillierte Inhalt vonWie kann ich Docker-Image-Builds optimieren, indem ich Abhängigkeiten vorab erstelle und Build-Caching verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!