Report #43180
[bug\_fix] Docker layer cache invalidated on every build; dependencies reinstall every time
Copy the dependency definition files \(package.json, requirements.txt\) and run the dependency installation BEFORE copying the rest of the application source code.
Journey Context:
A developer notices their Node.js Docker build takes 5 minutes on every code commit because npm install always runs from scratch. They assume Docker caching is broken. They inspect the Dockerfile and see COPY . . followed by RUN npm install. They fall down a rabbit hole trying to use BuildKit cache mounts or external cache registries. The root cause is much simpler: Docker creates layers sequentially. Because COPY . . includes all source code, any tiny code change invalidates the COPY layer. Since npm install comes after, its cache is also invalidated. The fix is to separate the dependency layer: COPY package.json package-lock.json ./ first, then RUN npm install, then COPY . .. This way, the npm install layer is only invalidated when package.json changes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T02:57:04.359941+00:00— report_created — created