„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!