Heim >Backend-Entwicklung >Golang >Wie behebt man den Fehler „Keine solche Datei oder kein solches Verzeichnis' mit Docker Scratch Images and Go?

Wie behebt man den Fehler „Keine solche Datei oder kein solches Verzeichnis' mit Docker Scratch Images and Go?

DDD
DDDOriginal
2024-12-15 11:09:11153Durchsuche

How to Resolve

„Keine solche Datei oder kein solches Verzeichnis“ mit Docker-Scratch-Image: Behoben

Bei Verwendung des Docker-Scratch-Image kann der Fehler „Nr.“ auftreten „Eine solche Datei oder ein solches Verzeichnis“ beim Ausführen einer Binärdatei. Dieser Fehler ist häufig darauf zurückzuführen, dass die Binärdatei dynamisch mit einer Bibliothek verknüpft ist, die im Bild nicht vorhanden ist.

Um dieses Problem zu beheben, deaktivieren Sie CGO (C Go):

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

CGO-Links zu Systembibliotheken, was zu Problemen in einem Scratch-Image führen kann. Durch die Deaktivierung von CGO stellen Sie sicher, dass die Binärdatei statisch verknüpft ist und nicht von externen Bibliotheken abhängig ist.

Zusätzlich können Sie die dynamischen Links in Ihrer Binärdatei mit ldd:

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

Dies überprüfen Der Befehl listet alle Bibliotheken auf, mit denen die Binärdatei verknüpft ist. Wenn ldd „keine dynamische ausführbare Datei“ zurückgibt, ist die Binärdatei statisch verknüpft.

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Keine solche Datei oder kein solches Verzeichnis' mit Docker Scratch Images and Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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