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"]
 |