-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile.backend
74 lines (44 loc) · 1.85 KB
/
Dockerfile.backend
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
FROM node:18.15.0-alpine AS bknd-base
FROM percona/percona-server-mongodb:6.0 AS db-base
########################### Backend Install Dependencies #####################################
# Install dependencies only when needed
FROM bknd-base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat
WORKDIR /app
# ENV NODE_ENV production
# Install dependencies based on the preferred package manager
COPY packages/backend/package.json yarn.lock* ./
# RUN yarn install --frozen-lockfile
RUN yarn install --verbose --network-timeout 100000
ENV PORT 3000
EXPOSE 3000
################################## Backend Build #############################################
FROM bknd-base AS builder
WORKDIR /app
COPY .eslintrc.js .prettierrc jest.config.js tsconfig.json tsconfig.build.json ./
COPY packages/backend ./packages/backend
COPY --from=deps /app/node_modules ./packages/backend/node_modules
ENV NODE_ENV production
ENV PATH="${PATH}:/app/packages/backend/node_modules/.bin"
WORKDIR /app/packages/backend
RUN yarn build
EXPOSE 3000
################################## Backend Deploy #############################################
FROM bknd-base AS runner
USER node
WORKDIR /app
ENV NODE_ENV production
# RUN addgroup --system --gid 1001 nodejsgroup
# RUN adduser --system --uid 1001 nodejsuser
COPY --from=builder --chown=node:node /app/packages/backend/node_modules ./node_modules
COPY --from=builder --chown=node:node /app/packages/backend/dist ./dist
# USER nodejsuser
ENV NODE_ENV="${NODE_ENV}" \
PATH="${PATH}:/app/node_modules/.bin" \
USER="node"
EXPOSE 3000
ENTRYPOINT ["node", "dist/src/main"]
################################## Database #############################################
FROM db-base AS database
EXPOSE 27017