Work out layer cache efficiency instantly with clear inputs, formula shown and shareable results.
Docker invalidates a layer and everything after it when its inputs change, so layer ordering determines cache efficiency. Copying application source before installing dependencies invalidates the expensive dependency layer on every code change; copying only the manifest first, installing, then copying source keeps that layer cached and cuts the rebuilt layer count dramatically.
Layer cache
cached share = (total - invalidated) / total; incremental build = invalidated x per-layer time; saving = (total - invalidated) x per-layer time x builds
Cache invalidation cascades. Any layer after the changed one must be rebuilt because its base has changed, regardless of whether its own inputs did.
Least frequently changing first: base image, system packages, dependency manifests, dependency install, then application source last.