Beim Ausführen einer Dockerized Go-Webanwendung tritt ein Fehler auf, der darauf hinweist: „ keine solche Datei oder kein solches Verzeichnis“ in standard_init_linux.go:190.
package main import ( "fmt" "net/http" "os" ) func hostHandler(w http.ResponseWriter, r *http.Request) { name, err := os.Hostname() if err != nil { panic(err) } fmt.Fprintf(w, "<h1>HOSTNAME: %s</h1><br>", name) fmt.Fprintf(w, "<h1>ENVIRONMENT VARS: </h1><br>") fmt.Fprintf(w, "<ul>") for _, evar := range os.Environ() { fmt.Fprintf(w, "<li>%s</li>", evar) } fmt.Fprintf(w, "</ul>") } func rootHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "<h1>Awesome site in Go!</h1><br>") fmt.Fprintf(w, "<a href='/host/'>Host info</a><br>") } func main() { http.HandleFunc("/", rootHandler) http.HandleFunc("/host/", hostHandler) http.ListenAndServe(":8080", nil) }
FROM scratch WORKDIR /home/ubuntu/go COPY webapp / EXPOSE 8080 CMD ["/webapp"]
Der Fehler tritt auf, weil der kompilierten Go-Binärdatei eine Abhängigkeit von libc fehlt, die dynamisch von eingebracht wird Standard beim Nettoimport. Um dies zu beheben, kompilieren Sie die Go-Binärdatei mit den folgenden Flags:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-w' -o mybin *.go
Das obige ist der detaillierte Inhalt vonWarum schlägt meine Dockerized Go Web App mit der Fehlermeldung „Keine solche Datei oder kein solches Verzeichnis' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!