Report #103701
[bug\_fix] Build fails with 'Dockerfile parse error line 1: unknown instruction: ARG' when using ARG before FROM
Use BuildKit's syntax directive to enable ARG before FROM: add \`\# syntax=docker/dockerfile:1.4\` at the top of the Dockerfile, or move ARG inside the FROM block if using older Docker.
Journey Context:
A developer migrated a Dockerfile that used ARG before FROM to define a base image tag: ARG BASE\_IMAGE=alpine:3.18 FROM $BASE\_IMAGE. This worked locally with Docker Desktop \(BuildKit enabled\) but failed on a CI server running Docker 19.03 with classic builder. The error was 'unknown instruction: ARG' because the classic builder does not support ARG before FROM. The developer spent hours checking syntax and file encoding. The root cause: the classic builder parses instructions sequentially and expects FROM first. The fix was to add the syntax directive \`\# syntax=docker/dockerfile:1.4\` which instructs BuildKit to use the modern parser that supports ARG before FROM. Alternatively, they could have moved the ARG after FROM and used a different pattern.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-12T20:05:50.789567+00:00— report_created — created