From f42055dc54054a0c23c5bb331536fb7267d07e4c Mon Sep 17 00:00:00 2001 From: victoranolu Date: Thu, 23 Nov 2023 17:07:05 +0100 Subject: [PATCH 1/4] a managed dockerfile --- .../api-node/Dockerfile | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 05-example-web-application/api-node/Dockerfile diff --git a/05-example-web-application/api-node/Dockerfile b/05-example-web-application/api-node/Dockerfile new file mode 100644 index 00000000..9acf75d4 --- /dev/null +++ b/05-example-web-application/api-node/Dockerfile @@ -0,0 +1,19 @@ +FROM node:19.6-alpine + +WORKDIR /usr/src/app + +ENV NODE_ENV production + +COPY package.json ./ + +RUN --mount=type=cache,target=/usr/src/app/.npm \ + npm set cache /usr/src/app/.npm && \ + npm ci --only=production + +USER node + +COPY --chown=node:node ./src . + +EXPOSE 3000 + +CMD ["node", "index.js"] \ No newline at end of file From 4bdc321d84583dfc533a6f66ff6da927c92186ed Mon Sep 17 00:00:00 2001 From: victoranolu Date: Tue, 5 Dec 2023 12:27:20 +0100 Subject: [PATCH 2/4] a managed dockerfile for golang api --- 05-example-web-application/api-golang/Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 05-example-web-application/api-golang/Dockerfile diff --git a/05-example-web-application/api-golang/Dockerfile b/05-example-web-application/api-golang/Dockerfile new file mode 100644 index 00000000..76e3d607 --- /dev/null +++ b/05-example-web-application/api-golang/Dockerfile @@ -0,0 +1,11 @@ +FROM golang:1.19-alpine + +WORKDIR /app + +COPY . . + +RUN go mod download + +RUN go build -o api-golang + +CMD [ "api-golang" ] \ No newline at end of file From 54de2da907825c3b8bdca7258b32a152f4bed2e2 Mon Sep 17 00:00:00 2001 From: victoranolu Date: Tue, 5 Dec 2023 15:30:35 +0100 Subject: [PATCH 3/4] a managed dockerfile for golang api 2 --- .../api-golang/Dockerfile | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/05-example-web-application/api-golang/Dockerfile b/05-example-web-application/api-golang/Dockerfile index 76e3d607..d455a14a 100644 --- a/05-example-web-application/api-golang/Dockerfile +++ b/05-example-web-application/api-golang/Dockerfile @@ -1,11 +1,35 @@ -FROM golang:1.19-alpine +FROM golang:1.19-buster as build WORKDIR /app +RUN useradd -u 1001 madu + +COPY go.mod go.sum ./ + +RUN --mount=type=cache,target=/go/pkg/mod \ + --mount=type=cache,target=/root/.cache/go-build \ + go mod download + COPY . . -RUN go mod download +RUN go build \ + -ldflags="-linkmode external -extldflags -static" \ + -tags netgo \ + -o api-golang + +### +FROM scratch + +COPY --from=build /app/api-golang api-golang + +COPY --from=build /etc/passwd /etc/paaswd + +COPY --from=build /app/api-golang api-golang + +USER madu + +ENV GIN-MODE release -RUN go build -o api-golang +EXPOSE 8080 -CMD [ "api-golang" ] \ No newline at end of file +CMD [ "/api-golang" ] \ No newline at end of file From 807eba712f880a0ec9ae83f48da6307326d63478 Mon Sep 17 00:00:00 2001 From: victoranolu Date: Mon, 11 Dec 2023 23:57:43 +0100 Subject: [PATCH 4/4] managed Dockerfile for client-react --- .../client-react/Dockerfile | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 05-example-web-application/client-react/Dockerfile diff --git a/05-example-web-application/client-react/Dockerfile b/05-example-web-application/client-react/Dockerfile new file mode 100644 index 00000000..d722ce5b --- /dev/null +++ b/05-example-web-application/client-react/Dockerfile @@ -0,0 +1,22 @@ +FROM node:19.4-bullseye as build + +WORKDIR /usr/src/app + +COPY package*.json ./ + +RUN --mount=type=cache,target=/usr/src/app/.npm \ + npm set cache /usr/src/app/.npm && \ + npm ci + +COPY . . + +RUN npm run build + +### +FROM nginxinc/nginx-unprivileged:1.23-alpine-perl + +COPY nginx.conf /etc/nginx/conf.d/default.conf + +COPY --from=build /usr/src/app/dist/ /usr/share/nginx/html + +EXPOSE 8080 \ No newline at end of file