1FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:latest as builder
2
3ARG TARGETPLATFORM
4ARG BUILDPLATFORM
5ARG TARGETOS
6ARG TARGETARCH
7
8# step 1. dep cache
9WORKDIR /app
10ARG TARGETPLATFORM=${BUILDPLATFORM:-linux/amd64}
11COPY go.mod go.sum ./
12RUN go mod download
13
14# step 2. build the actual app
15WORKDIR /app
16COPY . .
17RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags="-w -s" -o main ./cmd
18ARG TARGETOS=${TARGETPLATFORM%%/*}
19ARG TARGETARCH=${TARGETPLATFORM##*/}
20
21FROM --platform=${TARGETPLATFORM:-linux/amd64} scratch
22WORKDIR /app/
23COPY --from=builder /app/main /app/main
24ENTRYPOINT ["/app/main"]