Bir Docker resmim var, diyelim frontend.image
ki 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.image
bir 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 install
olup 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/jenkins
web 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> bash
sonra cmd su jenkins
sonra cmd npm cache ls
ile önbelleğe alınan birçok npm paketini listeleyerek teyit edebilirim.
Bu nedenle, chmod 777
izin 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 ls
ve 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 install
Localhost 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 install
alınan npm önbellek "hack"npm --skip-installed --cache-min 9999999 install
İlgili bir soru StackOverflow'da yayınlanmıştır.
npm cache ls
ve bir ham eklemek istiyorum ls ~/.npm/* -al
.