Docker Image Exec-Fehler: „Keine solche Datei oder kein solches Verzeichnis“ beim Ausführen der Go Web App
Bei einem kürzlich erstellten Docker-Image ist ein Fehler aufgetreten Beim Ausführen wird die Meldung „standard_init_linux.go:190: exec-Benutzerprozess hat „keine solche Datei oder kein solches Verzeichnis“ verursacht“ angezeigt. Dieser Fehler verhindert, dass die Go-Webanwendung ordnungsgemäß im Docker-Container ausgeführt wird.
Die Hauptursache für diesen Fehler liegt in einer fehlenden Datei, einem Skript ohne Interpreter oder einer ausführbaren Datei, der eine erforderliche Bibliothek fehlt. In diesem Fall führt der Import des „net“-Pakets in den Go-Code zur automatischen Einbindung von libc als dynamisch verknüpfte Binärdatei. Um dies zu überprüfen, verwenden Sie den Befehl „ldd“ für die Binärdatei.
Um dieses Problem zu beheben, müssen zusätzliche Build-Flags bereitgestellt werden:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-w' -o mybin *.go
Diese Flags deaktivieren CGO (die Build-Funktion des Go-Compilers). -in-Unterstützung für C), geben Sie das Zielbetriebssystem und die Zielarchitektur an und erstellen Sie eine statisch verknüpfte Binärdatei. Dadurch wird sichergestellt, dass alle erforderlichen Bibliotheken in die ausführbare Datei eingebettet sind, sodass keine externen Abhängigkeiten erforderlich sind.
Durch die Einbindung dieser Flags während des Go-Build-Prozesses enthält das resultierende Docker-Image die erforderlichen Abhängigkeiten und die Fehlermeldung wird angezeigt behoben, sodass die Go-Webanwendung erfolgreich im Docker-Container ausgeführt werden kann.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine Dockerized Go Web App mit „Keine solche Datei oder kein solches Verzeichnis' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!