Report #10530
[bug\_fix] Docker build invalidates dependency installation cache on every source code change
Reorder the Dockerfile to copy dependency manifests \(e.g., \`package.json\`, \`requirements.txt\`\) first, run the dependency installation step, and then copy the rest of the source code.
Journey Context:
A developer notices their CI pipeline takes 10 minutes on every commit, even for a one-line README change. They look at the Dockerfile and see \`COPY . /app\` followed by \`RUN pip install -r requirements.txt\`. They fall down a rabbit hole of trying to enable BuildKit cache mounts or external caches, but the real issue is Docker's layer caching mechanism. The \`COPY . /app\` layer invalidates whenever \*any\* file in the build context changes. Because this layer precedes the \`RUN pip install\` layer, the dependency installation layer is also invalidated and must re-run. By splitting the copy into \`COPY requirements.txt /app/\` -> \`RUN pip install\` -> \`COPY . /app\`, the expensive installation layer is only invalidated when \`requirements.txt\` changes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T10:54:07.931960+00:00— report_created — created