Report #14415
[bug\_fix] Package manager installation step \(e.g., npm install, pip install\) invalidates and re-runs on every code change, losing layer caching.
Split the COPY instruction: copy only the dependency manifest files \(package.json, requirements.txt\) first, run the package manager install, and then COPY the rest of the source code.
Journey Context:
A developer notices their Docker builds take 5 minutes every time they change a single line of source code. They assume Docker caching is broken. Looking at the Dockerfile, they see COPY . . followed by RUN npm install. They realize that because COPY . . copies all source code, any change to any file invalidates that layer. Since RUN npm install comes after, it also gets invalidated and has to re-download all dependencies. The fix is to reorder the instructions: COPY package.json package-lock.json ./ first, then RUN npm install, and finally COPY . .. This way, the expensive npm install layer is only invalidated if the package.json changes, while source code changes only invalidate the final COPY layer.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T21:25:50.465073+00:00— report_created — created