Trennen der Abhängigkeitsinstallation vom Erstellen von Go-Modulen
Go 1.11 führte Modulunterstützung ein, die die Abhängigkeitsinstallation während des Builds automatisiert und Neuerstellungen minimiert. Einige Entwickler ziehen es jedoch vor, Abhängigkeiten manuell in einer separaten Phase abzurufen, um das Container-Caching zu nutzen und die Wiederherstellungsgeschwindigkeit zu optimieren.
vgo-Lösung
In früheren Versionen von Go war dies der Fall Keine native Möglichkeit, Abhängigkeiten manuell abzurufen. Problem Nr. 26610 im Go-Repository behebt jedoch diese Funktion:
go mod download
Mit diesem Befehl können Sie Abhängigkeiten manuell abrufen, ohne den Build-Prozess auszuführen. Um diesen Befehl zu verwenden, benötigen Sie nur die Dateien go.mod und go.sum in Ihrem Projektverzeichnis.
Docker-Implementierung
Hier ist ein Beispiel für ein Docker-Build-Skript das einen zwischengespeicherten mehrstufigen Build implementiert und den Go-Mod-Download nutzt:
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 Implementierung dieser Trennung von Abhängigkeiten und Build-Stufen können Sie die Vorteile nutzen von Container-Caching für die Installation von Abhängigkeiten und zur Minimierung nachfolgender Build-Zeiten.
Alternative Überlegungen
Zusätzlich zum Go-Mod-Download-Ansatz enthält der Artikel „Containerisieren Sie Ihre Go-Entwicklerumgebung – Teil 2 untersucht eine weitere Technik zur Optimierung der Build-Geschwindigkeit: die Nutzung des Go-Compiler-Cache. Die Erkundung beider Optionen kann Ihnen dabei helfen, die beste Strategie für Ihr spezifisches Projekt und Ihre Umgebung auszuwählen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Installation der Go-Modulabhängigkeit vom Build-Prozess trennen, um schnellere Docker-Builds zu ermöglichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!