-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile
48 lines (33 loc) · 995 Bytes
/
Dockerfile
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
# Use node base image with tag 18-slim
FROM node:20-slim as base
# Set NODE_ENV environment variable to production
ENV NODE_ENV=production
# don't know why nest isn't available on path even it's part of deps
RUN npm i -g @nestjs/cli
# Expose port 3000
EXPOSE 3000
# Create app directory and set permissions
WORKDIR /app
RUN chown -R node:node /app
# Switch to non-root user
USER node
# Copy package.json and package-lock.json
COPY --chown=node:node package*.json ./
# Install dependencies
RUN npm ci && npm cache clean --force
# Set PATH environment variable in dev stage
ENV PATH /app/node_modules/.bin:$PATH
# Copy source code
COPY --chown=node:node . .
# Development stage
FROM base as dev
# Set NODE_ENV environment variable to development
ENV NODE_ENV=development
# Command to run development server
CMD ["npm", "run", "start:dev"]
# Production stage
FROM base as prod
# Build production code
RUN npm run build
# Command to run production server
CMD ["node", "dist/main.js"]