FromPlatformFlagConstDisallowed
Table of contents
Output
FROM --platform flag should not use constant value "linux/amd64"
Description
Specifying --platform
in the Dockerfile FROM
instruction forces the image to build on only one target platform. This prevents building a multi-platform image from this Dockerfile and you must build on the same platform as specified in --platform
.
The recommended approach is to:
- Omit
FROM --platform
in the Dockerfile and use the--platform
argument on the command line. - Use
$BUILDPLATFORM
or some other combination of variables for the--platform
argument. - Stage name should include the platform, OS, or architecture name to indicate that it only contains platform-specific instructions.
Examples
❌ Bad: using a constant argument for --platform
FROM --platform=linux/amd64 alpine AS base
RUN apk add --no-cache git
✅ Good: using the default platform
FROM alpine AS base
RUN apk add --no-cache git
✅ Good: using a meta variable
FROM --platform=${BUILDPLATFORM} alpine AS base
RUN apk add --no-cache git
✅ Good: used in a multi-stage build with a target architecture
FROM --platform=linux/amd64 alpine AS build_amd64
...
FROM --platform=linux/arm64 alpine AS build_arm64
...
FROM build_${TARGETARCH} AS build
...