Wie erstellt man statische Binärdateien in Go für Docker-Images von Grund auf?

Mary-Kate Olsen
Freigeben: 2024-10-31 17:17:30
Original
841 Leute haben es durchsucht

How to Build Static Binaries in Go for Docker Images from Scratch?

Flags zum Erstellen statischer Binärdateien in Go

Beim Erstellen von Docker-Images von Grund auf sind statische Binärdateien erforderlich, um Fehler während der Ausführung zu verhindern. Der Befehl RUN go build -o /go/bin/myapp kann jedoch Binärdateien erzeugen, die mit der Fehlermeldung „Keine solche Datei oder kein solches Verzeichnis“ fehlschlagen.

Um dies zu beheben, sind die folgenden Flags erforderlich:

RUN CGO_ENABLED=0 go build -o /go/bin/myapp -a -ldflags '-extldflags "-static"' .
Nach dem Login kopieren

Erklärung:

  • CGO_ENABLED=0: Deaktiviert CGO (Call Go from C), eine Funktion, die Go-Programmen ermöglicht C-Code aufrufen. Dies ist notwendig, da Linux C-Bibliotheken dynamisch verknüpft, was beim Erstellen statischer Binärdateien zu Problemen führen kann.
  • -a: Erzwingt den Neuaufbau aller Pakete und Abhängigkeiten, unabhängig davon, ob sie aktuell sind -date.
  • -ldflags '-extldflags "-static"': Gibt Flags an, die an den externen Linker übergeben werden sollen. In diesem Fall gibt -static an, dass eine statische Verknüpfung verwendet werden soll, um sicherzustellen, dass alle erforderlichen Bibliotheken in die Binärdatei eingebettet sind.

Es ist wichtig, sowohl CGO_ENABLED=0 als auch -ldflags '-extldflags " zu verwenden. -static"', weil:

  • CGO_ENABLED=0 CGO deaktiviert, aber keine statische Verknüpfung garantiert.
  • -ldflags '-extldflags "-static"' erzwingt die statische Verknüpfung, deaktiviert sie jedoch nicht CGO.

Durch die Verwendung beider Flags können Sie sicherstellen, dass die resultierende Binärdatei statisch ist und nicht auf externe Bibliotheken angewiesen ist.

Das obige ist der detaillierte Inhalt vonWie erstellt man statische Binärdateien in Go für Docker-Images von Grund auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage