Bir Docker resmim var, diyelim frontend.imageki bir Jenkins yapı kölesi için kullanıyorum. Jenkins Docker eklentisi , bu görüntüden bir kap döndürür ve kap içinde yapay nesneler oluşturur. Tüm bunlar harika çalışıyor. Bu durumda, frontend.imagebir AngularJs uygulaması oluşturmak için kullanılır. Bu Açısal uygulamayı oluşturmanın bir parçası, uygulamanın gerektirdiği npm paketlerini yüklemektir.
Bu işlem, npm kurulum, uzun zaman alıyor gibi görünüyor, 3 dakika gibi görünüyor, npm her seferinde her paketi kurar.
Köle için bir birim ekledim, bu bir ana bilgisayara monte birimdir, Docker eklentisi, ön uç kapsayıcısını her çalıştırdığında bu birimi kullanacaktır:
Komutu yürütür kullanım npm installolup jenkins. npm npm config get cacheçıktı veren komut ile bulabileceğiniz bir önbellek tutar/home/jenkins/.npm
Bu yüzden /slaves/volumes/tsl.frontend:/home/jenkinsweb kapsayıcı slave'imde anasistem birimi var .
Angular uygulamamı bir Jenkins projesi kullanarak oluşturuyorum, sorun oluşturmuyor, birçok npm paketi kuruldu. Docker ana bilgisayarına ssh ve cmd çalıştırırsanız, ls /slaves/volumes/tsl.frontendçok sayıda npm paketi görüyorum. Bu, köle için ana bilgisayar birim bağlantımın çalıştığı anlamına gelir.

Şimdi Jenkins projesini yeniden inşa ediyorum, Docker slave build container birim ana bilgisayar mount'unu kullanıyor olsa bile, npm her paketi tekrar kurar. Köle kabına cmd docker exec -it <some_clever_random_container_id> bashsonra cmd su jenkinssonra cmd npm cache lsile önbelleğe alınan birçok npm paketini listeleyerek teyit edebilirim.

Bu nedenle, chmod 777izin sorunları olmadığı için bu arada izinleri olan ana bilgisayar bağlama birimimde bile npm install, önbelleği kullanamıyorum.
Docker slave konteynerini döndüren Jenkins derlememde, çalıştırdığım ilk cmd npm cache lsve birçok paket listeleniyor, bu, ana bilgisayar hacmimin beklendiği gibi çalıştığı ve npm önbellek dizininin bütünlüğü olduğu anlamına gelmiyor mu?
npm installLocalhost makinemde çalıştırdığımda tüm paketleri ilk kez yükleyen ve bir dahaki sefere neredeyse hiç paket olmayan normal cmd'yi denedim . Ve ayrıca bu SO yanıtı yanı sıra cmd npm --cache-min 9999999 installalınan npm önbellek "hack"npm --skip-installed --cache-min 9999999 install
İlgili bir soru StackOverflow'da yayınlanmıştır.
npm cache lsve bir ham eklemek istiyorum ls ~/.npm/* -al.

