Report #7856
[bug\_fix] Docker layer cache invalidated on every code change — dependency installation \(npm install, pip install, go mod download\) reruns every build
Copy only dependency manifests \(package.json/package-lock.json, requirements.txt, go.mod/go.sum\) before the dependency installation RUN instruction, then COPY the remaining source code afterward. This separates the frequently-changing source code from the stable dependency layer.
Journey Context:
A developer notices their Docker builds consistently take 3–5 minutes even for a one-line code change. They examine the Dockerfile and find \`COPY . .\` immediately followed by \`RUN npm install\`. Because Docker creates a layer for each instruction and cache is invalidated when any input changes, every source file modification invalidates the COPY layer and all subsequent layers including npm install. They restructure the Dockerfile: first \`COPY package.json package-lock.json ./\`, then \`RUN npm install\`, then \`COPY . .\`. Now npm install is only re-run when package.json or package-lock.json changes, cutting rebuild time to seconds for code-only changes. This is the single most impactful Dockerfile optimization and the most common caching mistake.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T03:51:56.656189+00:00— report_created — created