| 
									
										
										
										
											2024-04-20 12:21:41 +02:00
										 |  |  | # gitzone dockerfile_service
 | 
					
						
							|  |  |  | ## STAGE 1 // BUILD
 | 
					
						
							| 
									
										
										
										
											2024-10-27 19:50:39 +01:00
										 |  |  | FROM code.foss.global/hosttoday/ht-docker-node:npmci as node1
 | 
					
						
							| 
									
										
										
										
											2024-04-20 12:21:41 +02:00
										 |  |  | 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
 | 
					
						
							| 
									
										
										
										
											2024-10-27 19:50:39 +01:00
										 |  |  | FROM code.foss.global/hosttoday/ht-docker-node:npmci as node2
 | 
					
						
							| 
									
										
										
										
											2024-04-20 12:21:41 +02:00
										 |  |  | 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
 | 
					
						
							| 
									
										
										
										
											2024-10-27 19:50:39 +01:00
										 |  |  | FROM code.foss.global/hosttoday/ht-docker-node:alpinenpmci as node3
 | 
					
						
							| 
									
										
										
										
											2024-04-20 12:21:41 +02:00
										 |  |  | 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
 | 
					
						
							| 
									
										
										
										
											2024-10-27 19:50:39 +01:00
										 |  |  | FROM code.foss.global/hosttoday/ht-docker-node:alpine as node4
 | 
					
						
							| 
									
										
										
										
											2024-04-20 12:21:41 +02:00
										 |  |  | 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"]
 |