# Use buildx for multi-architecture support FROM --platform=${BUILDPLATFORM} golang:1.23 AS builder WORKDIR /app # Copy go.mod and go.sum files to download dependencies COPY go.mod go.sum ./ RUN go mod download # Copy the source code into the container COPY . . # Build the application for the specified target architecture # https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/ # Declare TARGETOS and TARGETARCH in the local scope so they can be used in the build stage. ARG TARGETOS TARGETARCH RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build -o p1-logger . # Create a minimal runtime image FROM --platform=${TARGETPLATFORM} scratch WORKDIR /app # Copy the executable from the builder stage COPY --from=builder /app/p1-logger /app/p1-logger COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ # Run the application CMD ["./p1-logger"]