From b577a5498b3be01cc3d0c037e30cf8dafac1340a Mon Sep 17 00:00:00 2001 From: Icaro Rodrigues Date: Thu, 30 Nov 2023 10:31:15 -0300 Subject: [PATCH 1/4] apply multi-stage build in Dockerfile and set default user --- .dockerignore | 15 +++++++++++++++ docker/Dockerfile | 37 ++++++++++++++++++++++++++++--------- 2 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..97d8b361c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +.git +.github +.vscode +.*ignore +.env +docker-compose*.yml +Dockerfile* +docker/ +**/*_test.go +Makefile +*.sql +*.md +*.sh +*.dump +LICENSE diff --git a/docker/Dockerfile b/docker/Dockerfile index 10e7dbab6..295d5a722 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,19 +1,38 @@ -FROM golang:1.17.5-alpine3.14 +FROM golang:1.17.5-alpine3.14 AS builder WORKDIR /app -RUN apk update \ - && apk add --virtual build-deps gcc git curl tar \ - && rm -rf /var/cache/apk/* +RUN apk add --no-cache --virtual build-deps curl gcc -RUN addgroup -S golang \ - && adduser -S -G golang golang +COPY go.mod go.sum . +RUN --mount=type=cache,target=/go/pkg/mod/ \ + go mod download -x + +RUN curl -L https://github.com/weni-ai/goflow/releases/download/$(grep weni-ai/goflow go.mod | cut -d" " -f5)/docs.tar.gz --output docs.tar.gz \ + && tar -xf docs.tar.gz \ + && rm docs.tar.gz COPY . . +RUN --mount=type=cache,target=/go/pkg/mod/ \ + go install -v ./cmd/... + +FROM alpine:3.18.4 + +ENV APP_USER=app \ + APP_GROUP=app \ + USER_ID=11999 \ + GROUP_ID=11999 -RUN curl -L https://github.com/weni-ai/goflow/releases/download/$(grep weni-ai/goflow go.mod | cut -d" " -f5)/docs.tar.gz --output docs.tar.gz && tar -xf docs.tar.gz && rm docs.tar.gz +RUN addgroup --system --gid ${GROUP_ID} ${APP_GROUP} \ + && adduser --system --disabled-password --home /home/${APP_USER} \ + --uid ${USER_ID} --ingroup ${APP_GROUP} ${APP_USER} + +COPY --from=builder --chown=${APP_USER}:${APP_GROUP} /go/bin/ /app/ +COPY --from=builder --chown=${APP_USER}:${APP_GROUP} /app/docs /app/docs + +WORKDIR /app -RUN go install -v ./cmd/... +USER ${APP_USER}:${APP_GROUP} EXPOSE 8000 -ENTRYPOINT ["mailroom"] +ENTRYPOINT ["./mailroom"] From 6eebb1d64555f0e9ae6fd9310d8b108247db1505 Mon Sep 17 00:00:00 2001 From: Icaro Rodrigues Date: Tue, 12 Dec 2023 16:21:13 -0300 Subject: [PATCH 2/4] reduce version from alpine --- docker/Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 295d5a722..8f9088ce9 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,10 +1,10 @@ FROM golang:1.17.5-alpine3.14 AS builder WORKDIR /app + +RUN apk add --no-cache --virtual build-deps curl gcc git -RUN apk add --no-cache --virtual build-deps curl gcc - -COPY go.mod go.sum . +COPY go.mod go.sum ./ RUN --mount=type=cache,target=/go/pkg/mod/ \ go mod download -x @@ -16,7 +16,7 @@ COPY . . RUN --mount=type=cache,target=/go/pkg/mod/ \ go install -v ./cmd/... -FROM alpine:3.18.4 +FROM alpine:3.14 ENV APP_USER=app \ APP_GROUP=app \ From eea8c94a82aaba4a0072145a2d29edeece5abef5 Mon Sep 17 00:00:00 2001 From: Icaro Rodrigues Date: Tue, 12 Dec 2023 16:27:27 -0300 Subject: [PATCH 3/4] Revert "reduce version from alpine" This reverts commit 6eebb1d64555f0e9ae6fd9310d8b108247db1505. --- docker/Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 8f9088ce9..295d5a722 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,10 +1,10 @@ FROM golang:1.17.5-alpine3.14 AS builder WORKDIR /app - -RUN apk add --no-cache --virtual build-deps curl gcc git -COPY go.mod go.sum ./ +RUN apk add --no-cache --virtual build-deps curl gcc + +COPY go.mod go.sum . RUN --mount=type=cache,target=/go/pkg/mod/ \ go mod download -x @@ -16,7 +16,7 @@ COPY . . RUN --mount=type=cache,target=/go/pkg/mod/ \ go install -v ./cmd/... -FROM alpine:3.14 +FROM alpine:3.18.4 ENV APP_USER=app \ APP_GROUP=app \ From 8c03393d9ff09b6dff2b016537b07f3c091b21aa Mon Sep 17 00:00:00 2001 From: Icaro Rodrigues Date: Tue, 12 Dec 2023 16:28:25 -0300 Subject: [PATCH 4/4] install tzdata to test --- docker/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 295d5a722..e42a7958d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,7 +4,7 @@ WORKDIR /app RUN apk add --no-cache --virtual build-deps curl gcc -COPY go.mod go.sum . +COPY go.mod go.sum ./ RUN --mount=type=cache,target=/go/pkg/mod/ \ go mod download -x @@ -18,6 +18,8 @@ RUN --mount=type=cache,target=/go/pkg/mod/ \ FROM alpine:3.18.4 +RUN apk add --no-cache tzdata + ENV APP_USER=app \ APP_GROUP=app \ USER_ID=11999 \