Heim >Backend-Entwicklung >Golang >Wie kann das manuelle Abrufen von Abhängigkeiten Go-Docker-Builds optimieren?

Wie kann das manuelle Abrufen von Abhängigkeiten Go-Docker-Builds optimieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 04:42:12165Durchsuche

How Can Manual Dependency Fetching Optimize Go Docker Builds?

Abhängigkeiten für Docker-Build-Optimierungen manuell abrufen

In der Go-Programmierumgebung übernimmt das Go-Tool normalerweise die Abhängigkeitsverwaltung und -installation automatisch. Für optimierte Docker-Image-Builds kann es jedoch von Vorteil sein, die Abhängigkeitsinstallation als separate Phase zu trennen.

In Go 1.11 und früheren Versionen war dies aufgrund des Fehlens eines dedizierten Befehls nicht möglich. Durch einen Fix in Problem #26610 wurde jedoch der Befehl „go mod download“ eingeführt.

Um diesen Befehl für optimierte Docker-Builds zu nutzen:

  1. Abhängigkeitsmanifest kopieren: Kopieren Sie die Dateien go.mod und go.sum in den Build-Kontext des Docker-Images.
  2. Führen Sie go aus Mod-Download: Führen Sie den Go-Mod-Download innerhalb der Docker-Build-Phase aus, um die Abhängigkeiten manuell abzurufen.

Hier ist ein Beispiel für einen mehrstufigen Docker-Build mit Layer-Caching:

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"]

Durch die getrennte Abhängigkeitsinstallation kann Docker das Layer-Caching nutzen, wodurch Neuerstellungen effizienter werden, da viele Codeänderungen normalerweise keine Auswirkungen haben Abhängigkeiten.

Erwägen Sie außerdem, den Go-Compiler-Cache zu nutzen, wie im Artikel „Containerisieren Sie Ihre Go-Entwicklerumgebung – Teil 2“ beschrieben, um die Build-Zeiten weiter zu verkürzen.

Das obige ist der detaillierte Inhalt vonWie kann das manuelle Abrufen von Abhängigkeiten Go-Docker-Builds optimieren?. 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