Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Docker-Image-Builds optimieren, indem ich Abhängigkeiten vorab erstelle und Build-Caching verwende?

Wie kann ich Docker-Image-Builds optimieren, indem ich Abhängigkeiten vorab erstelle und Build-Caching verwende?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 07:36:30597Durchsuche

How Can I Optimize Docker Image Builds by Pre-Building Dependencies and Using Build Caching?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn