Rumah > pembangunan bahagian belakang > Golang > Mengapa Apl Web Dockerized Go Saya Gagal dengan Ralat 'tiada fail atau direktori sedemikian'?

Mengapa Apl Web Dockerized Go Saya Gagal dengan Ralat 'tiada fail atau direktori sedemikian'?

Linda Hamilton
Lepaskan: 2024-12-09 19:53:13
asal
856 orang telah melayarinya

Why Does My Dockerized Go Web App Fail with a

Ralat dalam Melaksanakan Proses Pengguna dalam Docker dengan Apl Web Go

Isu

Apabila menjalankan aplikasi web Dockerized Go, ralat berlaku yang menunjukkan " tiada fail atau direktori sedemikian" dalam standard_init_linux.go:190.

Kod Go

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)

}
Salin selepas log masuk

Fail Docker

FROM scratch
WORKDIR /home/ubuntu/go
COPY webapp /
EXPOSE 8080
CMD ["/webapp"]
Salin selepas log masuk

Punca dan Penyelesaian

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan