Menyelesaikan masalah "tiada fail atau direktori sedemikian" Ralat dengan Imej Gores Docker
Apabila membina imej Docker dengan imej asas gores, seseorang mungkin menghadapi ralat "standard_init_linux.go:207: proses pengguna exec menyebabkan "tiada fail atau direktori sedemikian"". Isu ini boleh timbul apabila kebergantungan atau perpustakaan tertentu tidak tersedia dalam imej calar.
Punca Kemungkinan
Ralat biasanya menunjukkan bahawa boleh laku binari tiada atau tidak dinamakan dengan betul . Sebagai alternatif, ini boleh bermakna binari dipautkan secara dinamik kepada perpustakaan yang tidak terdapat dalam imej calar.
Penyelesaian: Lumpuhkan CGO
Untuk menyelesaikan isu ini, pertimbangkan untuk melumpuhkan CGO (C Go) semasa proses binaan Go. CGO ialah ciri yang membolehkan program Go berinteraksi dengan kod C asli, tetapi ia boleh menghasilkan pautan dinamik ke perpustakaan standard C (libc).
Dengan melumpuhkan CGO, anda memastikan binari dipautkan secara statik tanpa sebarang kebergantungan luar. Gunakan arahan berikut untuk melumpuhkan CGO:
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...
Menyemak Pautan Dinamik
Selepas membina imej, anda boleh menggunakan perintah ldd untuk menyemak pautan dinamik dalam binari:
docker build --target=0 -t your_go_image . docker run -it --rm your_go_image ldd /$PROJ_NAME
Jika output ldd menunjukkan sebarang pautan dinamik, anda mungkin perlu siasat kebergantungan tersebut dan pastikan ia disertakan dalam imej Docker.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'tiada fail atau direktori sedemikian' Apabila Menggunakan Imej Gores Docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!