46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
# PRODUCTION DOCKERFILE
 | 
						|
# ---------------------
 | 
						|
# This Dockerfile allows to build a Docker image of the NestJS application
 | 
						|
# and based on a NodeJS 16 image. The multi-stage mechanism allows to build
 | 
						|
# the application in a "builder" stage and then create a lightweight production
 | 
						|
# image containing the required dependencies and the JS build files.
 | 
						|
#
 | 
						|
# Dockerfile best practices
 | 
						|
# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
 | 
						|
# Dockerized NodeJS best practices
 | 
						|
# https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md
 | 
						|
# https://www.bretfisher.com/node-docker-good-defaults/
 | 
						|
# http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/
 | 
						|
 | 
						|
FROM node:16-alpine as builder
 | 
						|
 | 
						|
ENV NODE_ENV build
 | 
						|
 | 
						|
#USER node
 | 
						|
WORKDIR /home/node
 | 
						|
 | 
						|
COPY package.json .
 | 
						|
COPY yarn.lock .
 | 
						|
 | 
						|
RUN yarn install --frozen-lockfile
 | 
						|
 | 
						|
COPY . /home/node
 | 
						|
 | 
						|
RUN yarn run build \
 | 
						|
    && yarn install --production --ignore-scripts --prefer-offline
 | 
						|
 | 
						|
# ---
 | 
						|
 | 
						|
FROM node:16-alpine
 | 
						|
 | 
						|
ENV NODE_ENV production
 | 
						|
 | 
						|
USER node
 | 
						|
WORKDIR /home/node
 | 
						|
 | 
						|
COPY --from=builder /home/node/package*.json /home/node/
 | 
						|
COPY --from=builder /home/node/node_modules/ /home/node/node_modules/
 | 
						|
COPY --from=builder /home/node/dist/ /home/node/dist/
 | 
						|
 | 
						|
CMD ["node", "dist/main.js"]
 |