Report #51639
[bug\_fix] Dependency installation layer cache is invalidated on every code change, causing slow builds
Reorder the Dockerfile to copy dependency manifests \(e.g., \`package.json\`, \`requirements.txt\`\) and run the installation before copying the rest of the source code \(\`COPY . .\`\).
Journey Context:
A developer notices their CI pipeline takes 10 minutes on every commit because it reinstalls NPM or Pip dependencies from scratch. They assume BuildKit's cache is broken or the CI runner isn't persisting cache properly. They spend hours debugging cache export/import configurations. Finally, they examine the build logs closely and see the \`RUN npm install\` layer is marked as 'CACHED' only when no source files change. They realize that \`COPY . .\` is placed \*before\* \`RUN npm install\`. Because Docker builds layers sequentially and \`COPY . .\` includes all application source code, any minor text change in any file invalidates the cache for the \`COPY\` instruction and all subsequent layers, including the dependency installation. Moving the dependency installation immediately after copying just the \`package.json\` fixes the issue, as that layer only invalidates when dependencies actually change.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T17:10:09.903585+00:00— report_created — created