Report #59941
[bug\_fix] Docker build cache completely invalidated on every code change, causing dependency installation \(e.g., npm install, pip install\) to run from scratch every time.
Split the \`COPY\` instruction: copy only the dependency manifest files \(e.g., \`package.json\`, \`requirements.txt\`\) first, run the dependency installation, and then \`COPY\` the rest of the source code. Ensure \`.dockerignore\` excludes local virtual environments and cache folders.
Journey Context:
A developer notices their CI pipeline takes 10 minutes because \`npm install\` runs on every commit. They assume BuildKit caching is broken. They try \`--no-cache\` to 'reset' things, then investigate CI cache plugins. Looking at the build logs, they realize the \`COPY . .\` instruction is executed before \`RUN npm install\`. Because Docker calculates layer cache keys based on the checksum of the files being copied, any change to \*any\* source file changes the checksum of the \`COPY . .\` layer, invalidating the cache for all subsequent layers, including the dependency installation. By copying \`package.json\` and \`package-lock.json\` separately first, the dependency installation layer only invalidates when the lockfiles change, restoring fast cached builds.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T07:05:48.032930+00:00— report_created — created