reduce size of stx-oidc-client image

Use Docker multi-stage build to start stx-oidc-client image from
'scratch' after using the upstream go image as builder.

Build the stx-oidc-client executable as statically linked.

This commit removes the build image and module downloads which are
approximately 500MB.  Instead of those artifacts take a snapshot of the
go version and downloaded file list.

Test plan:

PASS: build image
PASS: sanity on isolated executable
PASS: inspect image content/size
PASS: application sanity; authenticate and run kubectl command, review
      logs

Story: 2009831
Task: 46463

Change-Id: I7d911a133fa95537b957ef964916fc6e4ca5dcf1
Signed-off-by: Michel Thebeau <Michel.Thebeau@windriver.com>
This commit is contained in:
Michel Thebeau 2022-10-03 08:27:32 -04:00
parent 62384ab6f5
commit 07414fd91c

View File

@ -1,8 +1,18 @@
FROM golang:latest
FROM golang:latest as builder
WORKDIR /app
ADD . /app/
RUN go mod download
RUN go build -o stx-oidc-client .
ENV CGO_ENABLED=0
RUN go build --ldflags '-extldflags "-static"' -o stx-oidc-client .
RUN go version > go.version.txt
RUN find /go -type f > go.dl.txt
FROM scratch
WORKDIR /app
COPY --from=builder /app ./
EXPOSE 5555
CMD ["./stx-oidc-client"]