Leverage Docker BuildKit's cache and bind mount capabilities to dramatically improve CI build times and reduce image sizes. Instead of copying source files into intermediate layers, use bind mounts to provide build context and cache mounts for package managers and build artifacts.
Leverage Docker BuildKit’s cache and bind mount capabilities to dramatically improve CI build times and reduce image sizes. Instead of copying source files into intermediate layers, use bind mounts to provide build context and cache mounts for package managers and build artifacts.
Why this matters:
Implementation example:
# Use cache mounts for package managers
RUN \
--mount=target=/var/lib/apt/lists,type=cache,sharing=locked \
--mount=target=/var/cache/apt,type=cache,sharing=locked \
<<HEREDOC
apt update && apt install -y --no-install-recommends \
build-essential \
curl
HEREDOC
# Use bind mounts for source files and cache mounts for build artifacts
RUN \
--mount=type=bind,source=src,target=src \
--mount=type=bind,source=package.json,target=package.json \
--mount=type=cache,target=node_modules \
npm install && npm run build
Make sure your CI environment supports BuildKit (Docker 18.09+) and enable BuildKit features with DOCKER_BUILDKIT=1
.
Enter the URL of a public GitHub repository