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 go.mod . COPY go.sum . RUN make dependencies ARG POLLER_VERSION COPY . . RUN make build-poller \ GOARCH=$TARGETARCH \ GOOS=$(echo $BUILDPLATFORM | cut -d'/' -f1) \ GOBUILDFLAGS="-a -tags netgo,prod -installsuffix netgo" \ LDFLAGS="-w -s -d -X go/weather/internal/version.Version=$POLLER_VERSION" 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 WORKDIR /go ENTRYPOINT ["/go/bin/poller"]