Vì build cache của Docker vô hiệu theo thứ tự: 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
# slow: every source edit reinstalls dependencies
COPY . .
RUN npm ci
# fast: install layer only reruns when the lockfile changes
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).