Skip to content
Latchkey

Docker BuildKit "frontend dockerfile.v0 not found" / Unknown Frontend

BuildKit builds through a "frontend" that turns a Dockerfile into a build graph. This error means BuildKit could not load that frontend - either the built-in one is unavailable, or a # syntax= directive points at an image it cannot pull.

What this error means

A docker build/buildx build fails before any step with failed to solve: frontend dockerfile.v0 not found or no frontend attribute. With a custom # syntax= line it may instead fail pulling the frontend image - often transiently if the registry blipped.

docker build output
ERROR: failed to solve: frontend dockerfile.v0 not found
# or, with a custom syntax frontend:
ERROR: failed to solve: failed to load frontend "docker/dockerfile:1.7": pull access denied

Common causes

A bad or unreachable # syntax= frontend image

A # syntax=docker/dockerfile:1.x directive tells BuildKit to fetch that frontend image. A typo, a private mirror, or a registry blip makes the frontend unloadable.

BuildKit is too old or misconfigured

An old BuildKit/buildx without the built-in dockerfile.v0 frontend, or a daemon where BuildKit is disabled, cannot resolve the default frontend.

Air-gapped runner cannot pull the frontend

On a runner without registry access, the external syntax frontend image cannot be pulled, so the build never starts.

How to fix it

Pin a reachable syntax frontend (or drop it)

Reference a frontend image the runner can pull, or remove the directive to use the built-in one.

Dockerfile
# syntax=docker/dockerfile:1
# (built-in frontend - no external pull needed if you omit the line entirely)
FROM alpine:3.20

Update buildx/BuildKit and confirm it is active

Terminal
docker buildx version
DOCKER_BUILDKIT=1 docker build --progress=plain .

How to prevent it

  • Pin # syntax= to a digest your runners can always pull, or mirror it.
  • Keep buildx/BuildKit current so the built-in frontend is available.
  • Pre-pull the syntax frontend image on air-gapped runners.

Frequently asked questions

What causes ""frontend dockerfile.v0 not found""?
A # syntax=docker/dockerfile:1.x directive tells BuildKit to fetch that frontend image. A typo, a private mirror, or a registry blip makes the frontend unloadable.
How do I fix "frontend dockerfile.v0 not found"?
Reference a frontend image the runner can pull, or remove the directive to use the built-in one.
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card