Report #59753
[bug\_fix] Dependency installation step \(npm install, pip install\) runs on every build, invalidating the cache
Copy only the dependency manifest files \(e.g., \`package.json\`, \`requirements.txt\`\) and lock files before running the install command, then copy the rest of the source code in a subsequent step.
Journey Context:
A developer writes a Dockerfile that copies the entire source code with \`COPY . /app\` before running \`RUN npm install\`. Every time a single line of application code changes, the \`COPY . .\` layer checksum changes, which invalidates the cache for the \`RUN npm install\` layer. The developer tries to use BuildKit cache mounts, which helps slightly, but the install step still re-resolves dependencies. The rabbit hole involves trying to hack around it with \`.dockerignore\`. The real fix is reordering the Dockerfile instructions. By copying \`package.json\` and \`package-lock.json\` first, the \`RUN npm install\` layer is only invalidated when dependencies actually change. The fix works because Docker computes layer cache keys based on the checksums of the preceding layers and instructions.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T06:47:10.839345+00:00— report_created — created