47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
| # gitzone dockerfile_service
 | |
| ## STAGE 1 // BUILD
 | |
| FROM code.foss.global/hosttoday/ht-docker-node:npmci as node1
 | |
| COPY ./ /app
 | |
| WORKDIR /app
 | |
| ARG NPMCI_TOKEN_NPM2
 | |
| ENV NPMCI_TOKEN_NPM2 $NPMCI_TOKEN_NPM2
 | |
| RUN npmci npm prepare
 | |
| RUN pnpm config set store-dir .pnpm-store
 | |
| RUN rm -rf node_modules && pnpm install
 | |
| RUN pnpm run build
 | |
| 
 | |
| # gitzone dockerfile_service
 | |
| ## STAGE 2 // install production
 | |
| FROM code.foss.global/hosttoday/ht-docker-node:npmci as node2
 | |
| WORKDIR /app
 | |
| COPY --from=node1 /app /app
 | |
| RUN rm -rf .pnpm-store
 | |
| ARG NPMCI_TOKEN_NPM2
 | |
| ENV NPMCI_TOKEN_NPM2 $NPMCI_TOKEN_NPM2
 | |
| RUN npmci npm prepare
 | |
| RUN pnpm config set store-dir .pnpm-store
 | |
| RUN rm -rf node_modules/ && pnpm install --prod
 | |
| 
 | |
| 
 | |
| ## STAGE 3 // rebuild dependencies for alpine
 | |
| FROM code.foss.global/hosttoday/ht-docker-node:alpinenpmci as node3
 | |
| WORKDIR /app
 | |
| COPY --from=node2 /app /app
 | |
| ARG NPMCI_TOKEN_NPM2
 | |
| ENV NPMCI_TOKEN_NPM2 $NPMCI_TOKEN_NPM2
 | |
| RUN npmci npm prepare
 | |
| RUN pnpm config set store-dir .pnpm-store
 | |
| RUN pnpm rebuild -r
 | |
| 
 | |
| ## STAGE 4 // the final production image with all dependencies in place
 | |
| FROM code.foss.global/hosttoday/ht-docker-node:alpine as node4
 | |
| WORKDIR /app
 | |
| COPY --from=node3 /app /app
 | |
| 
 | |
| ### Healthchecks
 | |
| RUN pnpm install -g @servezone/healthy
 | |
| HEALTHCHECK --interval=30s --timeout=30s --start-period=30s --retries=3 CMD [ "healthy" ]
 | |
| 
 | |
| EXPOSE 80
 | |
| CMD ["npm", "start"]
 |