Allow cross-platform build of the Docker image

Also allows it to run as non-root and set the rageshake binary as the
entrypoint rather than setting the command.

Signed-off-by: Quentin Gliech <quenting@element.io>
This commit is contained in:
Quentin Gliech 2022-01-20 11:43:13 +01:00
parent a8c1ca6740
commit 4f6855b733
No known key found for this signature in database
GPG key ID: 22D62B84552719FC

View file

@ -1,18 +1,20 @@
FROM golang:alpine as builder
RUN apk add --update --no-cache git ca-certificates
ARG GO_VERSION=1.17
ARG DEBIAN_VERSION=11
ARG DEBIAN_VERSION_NAME=bullseye
# Build stage
FROM --platform=${BUILDPLATFORM} docker.io/library/golang:${GO_VERSION}-${DEBIAN_VERSION_NAME} as builder
RUN mkdir /build
WORKDIR /build
COPY go.mod .
COPY go.sum .
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o rageshake
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o rageshake
FROM scratch
# Runtime stage
FROM --platform=${TARGETPLATFORM} gcr.io/distroless/static-debian${DEBIAN_VERSION}:nonroot
COPY --from=builder /build/rageshake /rageshake
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
WORKDIR /
EXPOSE 9110
CMD ["/rageshake"]
ENTRYPOINT ["/rageshake"]