Beim Erstellen eines Docker-Images können Caching-Abhängigkeiten die Erstellungszeiten erheblich verkürzen. Der anfängliche Erstellungsprozess für diese Abhängigkeiten kann jedoch zeitaufwändig sein. Um diesen Prozess zu optimieren, suchen Entwickler häufig nach Möglichkeiten, alle in der Datei go.mod definierten Abhängigkeiten vorab zu erstellen.
Docker bietet eine effektive Methode, um diese Vorab-Optimierung zu erreichen. Wenn Sie Ihre Docker-Datei wie unten empfohlen strukturieren, können Sie von einem Caching-Mechanismus profitieren, der nachfolgende Builds erheblich beschleunigt:
FROM --platform=${BUILDPLATFORM} docker.io/golang:1.16.7-alpine AS build ARG TARGETOS ARG TARGETARCH WORKDIR /src ENV CGO_ENABLED=0 COPY go.* . RUN go mod download COPY . . RUN --mount=type=cache,target=/root/.cache/go-build \ GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /out/example . FROM scratch COPY --from=build /out/example /
Diese Docker-Datei nutzt einen Cache-Mount am Standardspeicherort für den Go-Build-Cache, /root/. Cache/Go-Build. Während des ersten Builds wird dieser Cache gefüllt. Nachfolgende Builds verwenden die zwischengespeicherten Dateien wieder, wodurch langwierige Abhängigkeitsneuerstellungen entfallen.
Um diese Optimierung zu aktivieren, müssen Sie Docker BuildKit aktivieren, indem Sie DOCKER_BUILDKIT=1 in Ihrem Build-Befehl festlegen . Alternativ können Sie das Docker-Buildx-Dienstprogramm verwenden.
DOCKER_BUILDKIT=1 docker build -t myimage .
docker buildx build -t myimage .
Um die Wirksamkeit dieser Optimierung zu überprüfen, muss überprüft werden, ob das Go-Build-Cache-Verzeichnis gefüllt ist, bevor Go Build in nachfolgenden Builds ausgeführt wird. Tests haben die beabsichtigte Funktionalität dieses Pre-Building-Ansatzes bestätigt.
Das obige ist der detaillierte Inhalt von## Wie kann ich Abhängigkeiten in meiner Docker-Datei vorab erstellen, um die Image-Erstellung zu beschleunigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!