# syntax=docker/dockerfile:1.7 FROM --platform=$BUILDPLATFORM golang:1.25-bookworm AS base ARG TARGETOS ARG TARGETARCH WORKDIR /src RUN apt-get update && apt-get install -y --no-install-recommends \ git ca-certificates && rm -rf /var/lib/apt/lists/* COPY go.mod ./ RUN --mount=type=cache,target=/go/pkg/mod \ go mod download COPY . . FROM base AS builder RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} \ go build -p "$(nproc)" -trimpath -ldflags="-s -w" -o /out/api ./cmd/api FROM base AS dev ENV ADDR=:8080 EXPOSE 8080 CMD ["go", "run", "./cmd/api"] FROM gcr.io/distroless/static-debian12:nonroot AS runtime WORKDIR /app COPY --from=builder /out/api /app/api ENV ADDR=:8080 EXPOSE 8080 ENTRYPOINT ["/app/api"]