TL;DR: Fix the typo on the reported line. `FRO` becomes `FROM`, and check for stray characters or wrong case on instruction keywords. Instructions must be uppercase at the start of a line; the parser tells you the exact line number, so go look at it.

## The error

```text
Dockerfile parse error line 3: unknown instruction: FRO
```

## Fix it

1. Open the Dockerfile at the reported line:
   `sed -n '1,10p' Dockerfile`
   Expected: you see the typo on line 3.
2. Fix it (`FRO` to `FROM`, or whatever the instruction should be).
3. Rebuild.

## When this applies
- Typos in instruction keywords (FRO, RNU, COPPY)
- Lowercase instructions in strict parsers or stray invisible characters

## When this does NOT apply
- "failed to read dockerfile" (the file was never found)
- Errors inside RUN shell commands (those parse fine; the shell fails later)

## Versions
All Docker versions; BuildKit reports `Dockerfile parse error line N`.

## Why it happens
The Dockerfile frontend parses instructions before executing anything. An unrecognized keyword aborts the parse immediately, which is why the failure is instant and names a line number.

## Edge cases
- A `# syntax=` directive pinning an old frontend can reject newer instructions (e.g. `COPY --link`); either update the syntax line or avoid the new flag.
- Missing line continuations (`\` at end of line) merge two lines into one and the parser blames the wrong instruction; check the lines above the reported one.
- BOM or CRLF line endings from Windows editors can confuse older parsers; save as UTF-8 LF.
