Saya memiliki gambar Docker, sebut saja frontend.image, yang saya gunakan untuk Jenkins build slave. Plugin Jenkins Docker akan memutar wadah dari gambar ini dan membuat artefak di dalam wadah. Ini semua bekerja dengan baik. Dalam hal ini, frontend.imagedigunakan untuk membangun aplikasi AngularJs. Bagian dari membangun aplikasi Angular ini adalah untuk menginstal paket npm yang dibutuhkan oleh aplikasi.
Proses ini, instal npm, tampaknya memakan waktu lama, sepertinya 3 menit, npm selalu menginstal setiap paket setiap kali.
Jadi saya menambahkan volume untuk budak saya, ini adalah volume yang dipasang di host, plugin Docker akan menggunakan volume ini setiap kali menjalankan wadah frontend:
Pengguna yang menjalankan perintah npm installadalah jenkins. npm menyimpan cache yang dapat Anda temukan dengan perintah npm config get cacheoutput mana/home/jenkins/.npm
Itulah sebabnya saya memiliki volume host yang /slaves/volumes/tsl.frontend:/home/jenkinsdipasang ke slave kontainer web saya.
Saya membangun aplikasi Angular saya menggunakan proyek Jenkins, membangun tidak ada masalah, banyak paket npm diinstal. Jika ssh ke host Docker saya dan menjalankan cmd ls /slaves/volumes/tsl.frontendsaya melihat banyak paket npm. Ini berarti volume host host saya untuk slave berfungsi.

Sekarang saya membangun proyek Jenkins lagi, npm menginstal setiap paket lagi, meskipun wadah penampung budak Docker menggunakan mount host volume. Saya bahkan dapat mengkonfirmasi dengan menampar ke dalam slave container dengan cmd docker exec -it <some_clever_random_container_id> bashlalu cmd su jenkinslalu cmd npm cache lsyang berisi daftar banyak paket npm yang di-cache.

Jadi, bahkan dengan volume mount host saya, yang memiliki izin chmod 777dengan cara sehingga tidak ada masalah izin, saya tidak bisa npm installmenggunakan cache.
Dalam build Jenkins saya, yang memutar kontainer slave Docker, cmd pertama yang saya jalankan adalah npm cache lsdan banyak paket terdaftar, bukankah ini berarti volume host saya berfungsi seperti yang diharapkan dan indeks cache npm memiliki integritas alias tidak rusak?
Saya telah mencoba npm installcmd biasa , yang, ketika saya jalankan di mesin localhost saya menginstal semua paket pertama kali dan hampir tidak ada paket lain kali. Dan juga cache npm "hack" npm --cache-min 9999999 install, diambil dari jawaban SO ini serta cmdnpm --skip-installed --cache-min 9999999 install
Pertanyaan terkait telah diposting di StackOverflow.
npm cache lsdan mentah ls ~/.npm/* -aldalam skrip build itu sendiri sebelum langkah build lainnya hanya untuk memastikan keadaan wadah saat memulai build.

