From 4fba600c661adc4e0da00ec370831cf80562451f Mon Sep 17 00:00:00 2001 From: franpog859 Date: Thu, 12 Jan 2023 08:15:09 +0100 Subject: [PATCH 1/3] Minify and secure Docker image --- Dockerfile | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 201fe49..981be5d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,14 @@ -FROM golang:1.19-alpine - +FROM golang:1.19-alpine as builder +WORKDIR / +COPY go.mod . +COPY go.sum . +RUN go mod download +COPY . . +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o main main.go + +FROM gcr.io/distroless/static:nonroot RUN mkdir /app - -ADD . /app - WORKDIR /app - -RUN go build -o main cmd/main.go - -CMD ["/app/main"] \ No newline at end of file +COPY --from=builder /main . +USER 65532:65532 +ENTRYPOINT ["/app/main"] \ No newline at end of file From 9b57a8f82cdf7a075de2ea4c4bf2493fea610738 Mon Sep 17 00:00:00 2001 From: franpog859 Date: Thu, 12 Jan 2023 08:25:27 +0100 Subject: [PATCH 2/3] Fix the dockerfile --- Dockerfile | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 981be5d..90ddb4f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,12 @@ FROM golang:1.19-alpine as builder WORKDIR / COPY go.mod . -COPY go.sum . RUN go mod download COPY . . -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o main main.go +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o main cmd/main.go FROM gcr.io/distroless/static:nonroot -RUN mkdir /app -WORKDIR /app +WORKDIR / COPY --from=builder /main . USER 65532:65532 -ENTRYPOINT ["/app/main"] \ No newline at end of file +ENTRYPOINT ["/main"] \ No newline at end of file From 07d1c0efb1d2276746b9b78dcc5629a797aafae8 Mon Sep 17 00:00:00 2001 From: franpog859 Date: Thu, 12 Jan 2023 08:41:06 +0100 Subject: [PATCH 3/3] Add the app directory in case it was important --- Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 90ddb4f..1c5cfe8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,10 +3,11 @@ WORKDIR / COPY go.mod . RUN go mod download COPY . . -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o main cmd/main.go +RUN mkdir exec +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o exec/main cmd/main.go FROM gcr.io/distroless/static:nonroot WORKDIR / -COPY --from=builder /main . +COPY --from=builder /exec /app USER 65532:65532 -ENTRYPOINT ["/main"] \ No newline at end of file +ENTRYPOINT ["/app/main"]