FROM --platform=$BUILDPLATFORM golang:1.16.0-alpine3.13 AS builder # ex. amd64 ARG TARGETARCH # ex. linux/amd64 ARG BUILDPLATFORM RUN apk update && \ apk add --no-cache git ca-certificates make tzdata gcc libc-dev && \ apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing cfssl && \ update-ca-certificates ENV USER=appuser ENV UID=10001 ENV GID=10001 WORKDIR /data RUN addgroup \ --gid "${GID}" \ "${USER}" && \ adduser \ --disabled-password \ --gecos "" \ --home "/nonexistent" \ --shell "/sbin/nologin" \ --no-create-home \ --uid "${UID}" \ -G "${USER}" \ "${USER}" COPY Makefile . COPY certs/ certs/ RUN make gen-cert COPY go.mod . COPY go.sum . RUN make dependencies ARG BINARYNAME="poller" # ARG BINARYNAME="weather" COPY . . # RUN make build-$BINARYNAME GOARCH=$TARGETARCH GOOS=$(echo $BUILDPLATFORM | cut -d'/' -f1) LDFLAGS='-extldflags="-static"' RUN make build-$BINARYNAME GOARCH=$TARGETARCH GOOS=$(echo $BUILDPLATFORM | cut -d'/' -f1) GOBUILDFLAGS="-a -tags netgo -installsuffix netgo" FROM scratch USER appuser:appuser COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY --from=builder /etc/passwd /etc/passwd COPY --from=builder /etc/group /etc/group COPY --from=builder --chown=appuser:appuser /data/bin/* /go/bin/poller COPY --from=builder --chown=appuser:appuser /data/certs/out/weather* /go WORKDIR /go ENTRYPOINT ["/go/bin/poller"]