Ralat Eksekutif Imej Docker: "Tiada Fail atau Direktori Sebegitu" Semasa Menjalankan Apl Web Go
Imej Docker yang dibuat baru-baru ini menghadapi ralat apabila berjalan, memaparkan mesej "standard_init_linux.go:190: proses pengguna exec menyebabkan "tiada fail atau direktori sedemikian"." Ralat ini menghalang aplikasi web Go daripada melaksanakan dengan betul dalam bekas Docker.
Punca ralat ini terletak pada fail yang hilang, skrip tiada penterjemahnya, atau boleh laku tidak mempunyai pustaka yang diperlukan. Dalam keadaan ini, import pakej "bersih" dalam kod Go menghasilkan kemasukan automatik libc sebagai binari yang dipautkan secara dinamik. Untuk mengesahkan ini, gunakan perintah "ldd" pada binari.
Untuk menyelesaikan isu ini, bendera binaan tambahan mesti disediakan:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-w' -o mybin *.go
Bendera ini melumpuhkan CGO (pengkompil Go yang dibina -dalam sokongan untuk C), nyatakan sistem pengendalian dan seni bina sasaran, dan hasilkan binari yang dipautkan secara statik. Ini memastikan bahawa semua perpustakaan yang diperlukan dibenamkan dalam boleh laku, menghapuskan keperluan untuk kebergantungan luaran.
Dengan memasukkan bendera ini semasa proses binaan Go, imej Docker yang terhasil akan menyertakan kebergantungan yang diperlukan dan mesej ralat akan menjadi diselesaikan, membenarkan aplikasi web Go untuk dilaksanakan dengan jayanya dalam bekas Docker.
Atas ialah kandungan terperinci Mengapa Apl Web Go Dockerized Saya Gagal dengan 'Tiada Fail atau Direktori Sebegitu'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!