Maison > développement back-end > Golang > le corps du texte

Comment créer des binaires statiques dans Go pour les images Docker à partir de zéro ?

Mary-Kate Olsen
Libérer: 2024-10-31 17:17:30
original
840 Les gens l'ont consulté

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

Drapeaux pour la création de binaires statiques dans Go

Lors de la création d'images Docker à partir de zéro, des binaires statiques sont nécessaires pour éviter les erreurs lors de l'exécution. Cependant, la commande RUN go build -o /go/bin/myapp peut produire des fichiers binaires qui échouent avec des erreurs « aucun fichier ou répertoire de ce type ».

Pour surmonter ce problème, les indicateurs suivants sont requis :

RUN CGO_ENABLED=0 go build -o /go/bin/myapp -a -ldflags '-extldflags "-static"' .
Copier après la connexion

Explication :

  • CGO_ENABLED=0 : Désactive CGO (Call Go from C), qui est une fonctionnalité qui permet aux programmes Go de appelez le code C. Ceci est nécessaire car Linux lie dynamiquement les bibliothèques C, ce qui peut entraîner des problèmes lors de la création de binaires statiques.
  • -a : force la reconstruction de tous les packages et dépendances, qu'ils soient ou non à jour. -date.
  • -ldflags '-extldflags "-static"' : Spécifie les indicateurs à transmettre à l'éditeur de liens externe. Dans ce cas, -static indique qu'une liaison statique doit être utilisée, garantissant que toutes les bibliothèques requises sont intégrées dans le binaire.

Il est important d'utiliser à la fois CGO_ENABLED=0 et -ldflags '-extldflags " -static"' car :

  • CGO_ENABLED=0 désactive CGO mais ne garantit pas la liaison statique.
  • -ldflags '-extldflags "-static"' force la liaison statique mais ne la désactive pas CGO.

En utilisant les deux indicateurs, vous pouvez vous assurer que le binaire résultant est statique et ne repose sur aucune bibliothèque externe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal