generated from khannurien/i-want-typescript
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
57 lines (40 loc) · 1.13 KB
/
Dockerfile
File metadata and controls
57 lines (40 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
### BUILD ###
# image de départ
FROM alpine:3.20 AS builder
# chemin de travail
WORKDIR ./app
# installation des paquets système
RUN apk update && apk add --no-cache nodejs npm
# ajout utilisateur node et groupe node
RUN addgroup -S node && adduser -S node -G node
# copie des fichiers du dépôt
COPY . .
# installation des dépendances avec npm
RUN npm ci
# build avec npm
RUN npm run build
# downgrade des privilèges
USER node
###RUN ###
FROM alpine:3.20 AS runner
# Chemin de travail
WORKDIR /app
# Installation de Node.js runtime
RUN apk add --no-cache nodejs
# Création de l'utilisateur et groupe node
RUN addgroup -S node && adduser -S node -G node
# Copie uniquement des fichiers nécessaires depuis builder
COPY --from=builder --chown=node:node /app/dist ./dist
COPY --from=builder --chown=node:node /app/package*.json ./
# Installation des dépendances de production uniquement
RUN apk add --no-cache npm && \
npm ci --only=production && \
npm cache clean --force && \
apk del npm && \
rm -rf /tmp/*
# Downgrade des privilèges
USER node
# exposition du port
EXPOSE 8000
# exécution
CMD ["node", "dist/index.js"]