Heim >Backend-Entwicklung >Golang >Wie kann ich Go-Abhängigkeiten für schnellere Docker-Builds manuell abrufen?

Wie kann ich Go-Abhängigkeiten für schnellere Docker-Builds manuell abrufen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-15 16:29:10190Durchsuche

How Can I Manually Fetch Go Dependencies for Faster Docker Builds?

Manuelles Abrufen von Abhängigkeiten in Go

Eines der in Go 1.11 eingeführten Schlüsselkonzepte ist die Modulunterstützung. Während die automatische Abhängigkeitsinstallationsfunktion normalerweise von Vorteil ist, kann in einigen Anwendungsfällen ein manuelles Abrufen von Abhängigkeiten erforderlich sein.

Zum Beispiel kann in einer Docker-Build-Umgebung, in der Abhängigkeitsänderungen weitaus seltener sind als Codeänderungen, die Nutzung des Layer-Caching von Docker möglich sein Beschleunigen Sie Neuerstellungen erheblich, indem Sie die Phase der Abhängigkeitsinstallation von der Buildphase trennen.

Lösung

Go bietet jetzt eine Lösung dafür Herausforderung. Dank Problem Nr. 26610 können Sie den Befehl „go mod download“ verwenden, um Abhängigkeiten manuell abzurufen. Für diesen Befehl ist lediglich das Vorhandensein der Dateien go.mod und go.sum erforderlich.

Hier ist ein Beispiel für einen zwischengespeicherten mehrstufigen Docker-Build, der diese Technik verwendet:

FROM golang:1.17-alpine as builder
RUN apk --no-cache add ca-certificates git
WORKDIR /build

# Fetch dependencies
COPY go.mod go.sum ./
RUN go mod download

# Build
COPY . ./
RUN CGO_ENABLED=0 go build

# Create final image
FROM alpine
WORKDIR /
COPY --from=builder /build/myapp .
EXPOSE 8080
CMD ["./myapp"]

Zusätzlich der Artikel „Containerisieren Sie Ihre Go-Entwicklerumgebung – Teil 2“ bietet wertvolle Einblicke in die Nutzung des Go-Compiler-Caches zur weiteren Verbesserung der Build-Geschwindigkeit.

Das obige ist der detaillierte Inhalt vonWie kann ich Go-Abhängigkeiten für schnellere Docker-Builds manuell abrufen?. 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