Tôi có một hình ảnh Docker, hãy gọi nó frontend.image, mà tôi sử dụng cho một nô lệ xây dựng Jenkins. Plugin Jenkins Docker sẽ quay một container từ hình ảnh này và xây dựng các tạo phẩm bên trong container. Tất cả điều này làm việc tuyệt vời. Trong trường hợp này, ứng frontend.imagedụng được sử dụng để xây dựng ứng dụng AngularJs. Một phần của việc xây dựng ứng dụng Angular này là cài đặt các gói npm mà ứng dụng yêu cầu.
Quá trình này, cài đặt npm, dường như mất nhiều thời gian, dường như 3 phút, npm luôn cài đặt mọi gói mỗi lần.
Vì vậy, tôi đã thêm một ổ đĩa cho nô lệ của mình, nó là ổ đĩa được gắn trên máy chủ, plugin Docker sẽ sử dụng ổ đĩa này mỗi khi nó chạy bộ chứa frontend:
Người dùng thực thi lệnh npm installlà jenkins. npm giữ một bộ đệm mà bạn có thể tìm thấy bằng lệnh npm config get cachexuất ra/home/jenkins/.npm
Đó là lý do tại sao tôi có khối lượng máy chủ /slaves/volumes/tsl.frontend:/home/jenkinsđược gắn vào nô lệ bộ chứa web của mình.
Tôi xây dựng ứng dụng Angular của mình bằng dự án Jenkins, xây dựng không có vấn đề gì, nhiều gói npm được cài đặt. Nếu ssh vào máy chủ Docker của tôi và chạy cmd, ls /slaves/volumes/tsl.frontendtôi thấy rất nhiều gói npm. Điều này có nghĩa là khối lượng máy chủ lưu trữ của tôi cho nô lệ làm việc.

Bây giờ tôi xây dựng lại dự án Jenkins, npm cài đặt lại từng gói một lần nữa, mặc dù bộ chứa bản dựng nô lệ Docker đang sử dụng giá đỡ máy chủ khối lượng. Tôi thậm chí có thể xác nhận bằng cách bash vào container nô lệ với cmd docker exec -it <some_clever_random_container_id> bashrồi cmd su jenkinsrồi cmd npm cache lsliệt kê nhiều gói npm được lưu trữ.

Vì vậy, ngay cả với khối lượng gắn kết máy chủ của tôi, có quyền truy cập chmod 777bằng cách này để không có vấn đề về quyền, tôi không thể npm installsử dụng bộ đệm.
Trong bản dựng Jenkins của tôi, tạo ra thùng chứa nô lệ Docker, cmd đầu tiên tôi chạy là npm cache lsvà nhiều gói được liệt kê, điều này không có nghĩa là khối lượng máy chủ của tôi hoạt động như mong đợi và chỉ số bộ đệm npm có toàn vẹn hay không bị hỏng?
Tôi đã thử npm installcmd thông thường , khi tôi chạy trên máy localhost của tôi sẽ cài đặt tất cả các gói lần đầu tiên và gần như không có gói nào vào lần tiếp theo. Và cũng là "hack" npm cache npm --cache-min 9999999 install, được lấy từ câu trả lời SO này cũng như cmdnpm --skip-installed --cache-min 9999999 install
Một câu hỏi liên quan đã được đăng trên StackOverflow.
npm cache lsvà một nguyên ls ~/.npm/* -altrong tập lệnh xây dựng trước bất kỳ bước xây dựng nào khác chỉ để đảm bảo trạng thái của bộ chứa khi bắt đầu xây dựng.

