Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyelesaikan Ralat 'tiada fail atau direktori' dalam Docker Scratch Images?

Bagaimana untuk Menyelesaikan Ralat 'tiada fail atau direktori' dalam Docker Scratch Images?

Barbara Streisand
Lepaskan: 2024-12-17 16:15:10
asal
501 orang telah melayarinya

How to Solve

Menyelesaikan masalah "tiada fail atau direktori sedemikian" Ralat dengan Docker Scratch Image

Mesej ralat "tiada fail atau direktori" yang mengecewakan boleh timbul semasa bekerja dengan imej gores Docker. Ralat ini biasanya menunjukkan ketidakpadanan antara nama perduaan dan nama sebenar atau pautan dinamik yang tiada kepada pustaka penting.

Dalam imej gores Docker, perduaan sering disalin daripada imej asas. Seperti yang digambarkan dalam Dockerfile yang disediakan, imej calar dibina dengan menyalin fail penting seperti /etc/passwd dan binari $PROJ_BIN_PATH daripada imej asas. Walau bagaimanapun, untuk menyelesaikan ralat ini, adalah penting untuk melumpuhkan CGO (C Go) menggunakan arahan CGO_ENABLED=0.

Dengan CGO didayakan, pautan dinamik ke perpustakaan seperti libc atau libmusl boleh dibuat, yang membawa kepada ralat apabila ini perpustakaan tidak tersedia dalam imej contengan. Dengan melumpuhkan CGO, binari yang disusun secara statik dicipta, mengalih keluar keperluan untuk rujukan perpustakaan luaran.

Untuk membetulkan ralat menggunakan penyelesaian ini, gantikan arahan RUN GOOS=linux GOARCH=amd64 go build sedia ada dengan yang berikut dalam anda Fail Docker:

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
    -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...
Salin selepas log masuk

Ini akan memastikan binari anda disusun secara statik dan tidak bergantung pada luaran perpustakaan, menyelesaikan ralat "tiada fail atau direktori sedemikian".

Sebagai alternatif, anda boleh menyemak pautan dinamik dengan memanfaatkan arahan ldd dalam Docker, seperti yang dicadangkan dalam penyelesaian yang disediakan. Dengan menjalankan docker build --target=0 -t your_go_image . dan kemudian docker run -it --rm your_go_image ldd /$PROJ_NAME, anda boleh memeriksa kebergantungan dinamik binari anda dan mengenal pasti mana-mana perpustakaan yang berpotensi hilang.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'tiada fail atau direktori' dalam Docker Scratch Images?. 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