Vì build cache của Docker bị invalidate theo thứ tự layer: khi một instruction bị coi là thay đổi, mọi layer phía sau nó đều build lại.
Nếu copy toàn bộ source trước rồi mới npm install, chỉ cần sửa một dòng code là checksum thư mục đổi → layer COPY miss cache → npm install chạy lại từ đầu.
dockerfile
# chậm: sửa source nào cũng cài lại dependency
COPY . .
RUN npm ci
# nhanh: layer cài chỉ chạy lại khi lockfile đổi
COPY package.json package-lock.json ./
RUN npm ci
COPY . .Nguyên tắc chung: xếp instruction theo tần suất thay đổi tăng dần — cài gói hệ thống, rồi dependency, rồi source code cuối cùng.
Cùng logic đó áp cho requirements.txt (Python), go.mod/go.sum (Go), pom.xml (Maven).