Q: A developer has a project with a 10GB `data/` directory containing training datasets. Every `docker build` takes 15 minutes before even executing the first Dockerfile instruction. The Dockerfile doesn't reference the `data/` directory at all. Why is it so slow?
Before executing any Dockerfile instruction, Docker packages the entire build context (the directory passed to docker build) and transfer...
🛠️ Production Runbook & Step-by-Step Resolution
Production Solution & Architecture
Before executing any Dockerfile instruction, Docker packages the entire build context (the directory passed to docker build) and transfers it to the Docker daemon. If the data/ directory is inside the build context, Docker transfers all 10GB every single build — even though no COPY or ADD references it. The "Sending build context to Docker daemon... 10GB" message in the build output confirms this. *Fix:* Add data/ to .dockerignore: This reduces the build context to only the files the Dockerfile actually needs. Alternatively, restructure the project so the Dockerfile lives in a subdirectory without the data, or use BuildKit's ability to specify individual files via --build-context.
data/
*.csv
*.parquet
__pycache__/
.git/
- Immediate Triage: Before executing any Dockerfile instruction, Docker packages the entire build context (the dire
- Run targeted verification commands before modifying configuration.
- Automate permanent guardrails (CI check, alerts, IaC policy) to prevent recurrence.