Eu tenho uma imagem do Docker, vamos chamá-la frontend.image, que eu uso para um Jenkins build slave. O plug - in Jenkins Docker girará um contêiner nesta imagem e criará artefatos dentro do contêiner. Tudo isso funciona muito bem. Nesse caso, o frontend.imageé usado para criar um aplicativo AngularJs. Parte da criação desse aplicativo Angular é instalar os pacotes npm necessários.
Esse processo, npm install, parece levar muito tempo, 3 minutos, o npm sempre instala todos os pacotes todas as vezes.
Então, adicionei um volume para o meu escravo, é um volume montado no host, o plug-in do Docker usará esse volume sempre que executar o contêiner de front-end:
O usuário que executa o comando npm installé jenkins. O npm mantém um cache que você pode encontrar com o comando npm config get cacheque gera/home/jenkins/.npm
É por isso que tenho o volume do host /slaves/volumes/tsl.frontend:/home/jenkinsmontado no meu escravo de contêiner da web.
Eu construo meu aplicativo Angular usando um projeto Jenkins, não cria nenhum problema, muitos pacotes npm estão instalados. Se o ssh no meu host do Docker e executar o cmd ls /slaves/volumes/tsl.frontend, vejo muitos pacotes npm. Isso significa que o volume do meu host montado para o escravo funcionou.

Agora, construo o projeto Jenkins novamente, o npm instala todos os pacotes novamente, mesmo que o contêiner de construção escravo do Docker esteja usando a montagem do host de volume. Posso até confirmar baseando-me no contêiner escravo com cmd docker exec -it <some_clever_random_container_id> bash, cmd su jenkinse cmd, npm cache lsque lista muitos pacotes npm armazenados em cache.

Portanto, mesmo com o volume de montagem do host, que possui permissões chmod 777a propósito, para que não haja problemas de permissões, não consigo npm installusar o cache.
Na minha compilação Jenkins, que gira o contêiner escravo do Docker, o primeiro cmd que eu executo é npm cache lse muitos pacotes estão listados, isso não significa que o volume do meu host está funcionando conforme o esperado e o índice de cache npm tem integridade, ou seja, não está corrompida?
Eu tentei o npm installcmd normal , que, quando eu executo na minha máquina localhost, instala todos os pacotes na primeira vez e quase nenhum pacote na próxima vez. E também o cache npm "hack" npm --cache-min 9999999 install, extraído dessa resposta do SO e do cmdnpm --skip-installed --cache-min 9999999 install
Uma pergunta relacionada foi publicada no StackOverflow.
npm cache lse um raw ls ~/.npm/* -alno próprio script de compilação antes de qualquer outra etapa da compilação apenas para garantir o estado do contêiner ao iniciar a compilação.

