Maison >développement back-end >Golang >Comment corriger l'erreur « aucun fichier ou répertoire de ce type » lors de l'utilisation d'images Scratch Docker ?
Dépannage de l'erreur "aucun fichier ou répertoire de ce type" avec l'image de travail Docker
Lors de la création d'une image Docker avec une image de base de travail, il est possible rencontrez l'erreur "standard_init_linux.go:207 : le processus utilisateur d'exécution a provoqué "aucun fichier ou répertoire de ce type"". Ce problème peut survenir lorsque certaines dépendances ou bibliothèques ne sont pas disponibles dans l'image de travail.
Causes possibles
L'erreur indique généralement que l'exécutable binaire est manquant ou mal nommé. . Alternativement, cela pourrait signifier que le binaire est lié dynamiquement à une bibliothèque qui n'est pas présente dans l'image scratch.
Solution : Désactivez CGO
Pour résoudre ce problème, envisagez de désactiver CGO (C Go) pendant le processus de construction Go. CGO est une fonctionnalité qui permet aux programmes Go d'interagir avec le code C natif, mais elle peut entraîner des liens dynamiques vers la bibliothèque standard C (libc).
En désactivant CGO, vous vous assurez que le binaire est lié statiquement sans toute dépendance externe. Utilisez la commande suivante pour désactiver CGO :
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...
Vérification des liens dynamiques
Après avoir créé l'image, vous pouvez utiliser la commande ldd pour vérifier les liens dynamiques dans le binaire :
docker build --target=0 -t your_go_image . docker run -it --rm your_go_image ldd /$PROJ_NAME
Si la sortie de ldd indique des liens dynamiques, vous devrez peut-être enquêter sur ces dépendances et vous assurer qu'elles sont incluses dans le Image Docker.
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!