Rumah >pembangunan bahagian belakang >Golang >Mengapa Apl Web Dockerized Go Saya Gagal dengan Ralat 'tiada fail atau direktori sedemikian'?
Apabila menjalankan aplikasi web Dockerized Go, ralat berlaku yang menunjukkan " tiada fail atau direktori sedemikian" dalam 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"]
Ralat timbul kerana Go yang disusun binari tidak mempunyai pergantungan pada libc, yang dibawa masuk secara dinamik secara lalai apabila mengimport net. Untuk membetulkan ini, susun binari Go dengan bendera berikut:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-w' -o mybin *.go
Atas ialah kandungan terperinci Mengapa Apl Web Dockerized Go Saya Gagal dengan Ralat 'tiada fail atau direktori sedemikian'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!