Maison >développement back-end >Golang >Comment résoudre les erreurs « aucun fichier ou répertoire de ce type » avec Docker Scratch Images et Go ?

Comment résoudre les erreurs « aucun fichier ou répertoire de ce type » avec Docker Scratch Images et Go ?

DDD
DDDoriginal
2024-12-15 11:09:11153parcourir

How to Resolve

"aucun fichier ou répertoire de ce type" avec Docker Scratch Image : résolu

Lors de l'utilisation de l'image scratch de Docker, vous pouvez rencontrer l'erreur "non tel fichier ou répertoire" lors de l'exécution d'un binaire. Cette erreur provient souvent du fait que le binaire est lié dynamiquement à une bibliothèque qui n'existe pas dans l'image.

Pour remédier à ce problème, désactivez CGO (C Go) :

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
    -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...

Liens CGO aux bibliothèques système, ce qui peut entraîner des problèmes dans une image de travail. En désactivant CGO, vous vous assurez que le binaire est lié statiquement et ne dépend pas de bibliothèques externes.

De plus, vous pouvez vérifier les liens dynamiques dans votre binaire en utilisant ldd :

docker build --target=0 -t your_go_image .
docker run -it --rm your_go_image ldd /$PROJ_NAME

Ceci La commande listera toutes les bibliothèques auxquelles le binaire est lié. Si ldd renvoie "pas un exécutable dynamique", le binaire est lié statiquement.

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!

Déclaration:
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