Report #40488
[bug\_fix] Docker build cache invalidated on every code change, causing dependency installation steps \(npm install, pip install\) to re-run from scratch.
Reorder Dockerfile instructions: copy only dependency manifests \(package.json, requirements.txt\) first, run the install step, and then copy the rest of the source code.
Journey Context:
A developer notices their CI pipeline takes 10 minutes because \`npm install\` runs on every build, even for a one-line code change. They assume BuildKit caching is broken. They inspect the Dockerfile and see \`COPY . .\` immediately followed by \`RUN npm install\`. Because \`COPY . .\` includes all source files, any change to any source file invalidates the layer cache for that COPY instruction. Since subsequent layers depend on it, the \`npm install\` layer cache is also invalidated and must rebuild. The fix leverages BuildKit's layer hashing: by copying only \`package.json\` and \`package-lock.json\` first, the \`npm install\` layer only invalidates when dependencies actually change. The final \`COPY . .\` comes after, absorbing the frequent source code changes without busting the dependency cache.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T22:25:49.354554+00:00— report_created — created