Skip to content

Commit 45fca66

Browse files
committed
cap04-12-organizacao-e-otimizacao-de-instrucoes-dockerfile
1 parent e46ae5d commit 45fca66

2 files changed

Lines changed: 91 additions & 0 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
FROM node:23.0.0-slim AS ci
2+
3+
# baseado no quanto as instruções podem mudar
4+
# instruções que não mudam ou pouco mudam devem ficar no topo
5+
# ENV, ARG, RUN apt update, apt install
6+
7+
RUN apt update && apt install -y \
8+
git \
9+
curl && \
10+
rm -rf /var/lib/apt/lists/*
11+
12+
# deterministicas e não deterministicas
13+
14+
#RUN echo "hello world" > test.txt
15+
16+
# ARG BUILD_TIMESTAMP
17+
# RUN echo "$BUILD_TIMESTAMP" > /build_time.txt
18+
19+
# add vs copy
20+
21+
#ADD --checksum=sha256:278888 http://ftp.de.debian.org/debian/pool/main/c/curl/curl_7.88.1-10+deb12u12_amd64.deb /tmp/curl.deb
22+
ADD http://ftp.de.debian.org/debian/pool/main/c/curl/curl_7.88.1-10+deb12u12_amd64.deb /tmp/curl.deb
23+
# RUN script.sh
24+
# gzip, bzip2 or xz
25+
ADD curl-8.15.0.tar.gz /tmp/test
26+
27+
28+
USER node
29+
30+
RUN mkdir /home/node/app
31+
32+
WORKDIR /home/node/app
33+
34+
RUN --mount=type=bind,source=package.json,target=package.json \
35+
--mount=type=bind,source=package-lock.json,target=package-lock.json \
36+
--mount=type=cache,target=/home/node/.npm,uid=1000,gid=1000,id=npm-cache \
37+
npm ci
38+
39+
COPY --chown=node:node . .
40+
41+
CMD [ "tail", "-f", "/dev/null" ]
42+
43+
FROM node:23.0.0-slim AS builder
44+
45+
ENV NODE_ENV=production
46+
47+
USER node
48+
49+
RUN mkdir /home/node/app
50+
51+
WORKDIR /home/node/app
52+
53+
COPY --from=ci --chown=node:node /home/node/app .
54+
RUN npm run build
55+
56+
RUN --mount=type=cache,target=/home/node/.npm,uid=1000,gid=1000,id=npm-cache \
57+
npm ci --only=production
58+
59+
FROM node:23.0.0-slim AS production
60+
61+
ENV NODE_ENV=production
62+
63+
USER node
64+
65+
RUN mkdir /home/node/app
66+
67+
WORKDIR /home/node/app
68+
69+
COPY --chown=node:node --from=builder /home/node/app/dist ./dist
70+
COPY --chown=node:node --from=builder /home/node/app/node_modules ./node_modules
71+
COPY --chown=node:node --from=builder /home/node/app/package.json ./
72+
73+
EXPOSE 3000
74+
75+
CMD [ "node", "dist/main.js" ]
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
group "default" {
2+
targets = [ "nestjs-prod" ]
3+
}
4+
5+
target "nestjs-prod" {
6+
context = "./nestjs-project"
7+
dockerfile = "../Dockerfile"
8+
tags = ["nestjs:latest"]
9+
}
10+
11+
target "nestjs-ci" {
12+
context = "./nestjs-project"
13+
dockerfile = "../Dockerfile"
14+
tags = ["nestjs:ci"]
15+
target = "ci"
16+
}

0 commit comments

Comments
 (0)