49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
|  | # Use a multi-stage build
 | ||
|  | FROM farhan23432/ris_git:2.30.1 AS code
 | ||
|  | 
 | ||
|  | # Set build arguments and labels
 | ||
|  | ARG BUILD_ID
 | ||
|  | RUN echo $BUILD_ID
 | ||
|  | LABEL stage=builder | ||
|  | LABEL build_id=$BUILD_ID
 | ||
|  | 
 | ||
|  | # Clone repository and copy React.js code
 | ||
|  | RUN mkdir /repo
 | ||
|  | WORKDIR /repo
 | ||
|  | RUN git clone http://$GITEA_USER:$GITEA_PASS@157.66.191.31:3000/risadmin_prod/testrm102.git
 | ||
|  | COPY . .
 | ||
|  | 
 | ||
|  | # Use a multi-stage build
 | ||
|  | FROM node:14-alpine AS builder
 | ||
|  | 
 | ||
|  | # Set working directory
 | ||
|  | WORKDIR /app
 | ||
|  | 
 | ||
|  | # Copy React.js code and install dependencies
 | ||
|  | COPY --from=code /repo/testrm102/testrm102-front-f/authsec_react_materail_ui/ .
 | ||
|  | #RUN npm install --force
 | ||
|  | # Retry logic for npm install
 | ||
|  | # Retry 5 times, waiting 10 seconds between each attempt
 | ||
|  | RUN set -e; \
 | ||
|  |     for i in $(seq 1 5); do \
 | ||
|  |         echo "Attempt $i: npm install"; \
 | ||
|  |         npm install --force && break || \
 | ||
|  |         echo "npm install failed, retrying in 10 seconds..."; \
 | ||
|  |         sleep 10; \
 | ||
|  |     done
 | ||
|  | RUN npm install --force react-qrcode-logo
 | ||
|  | RUN npm install --force react-toastify
 | ||
|  | RUN PUBLIC_URL=http://157.66.191.31:34372/testrm10238984/front npm run build
 | ||
|  | 
 | ||
|  | # Use Nginx as the web server
 | ||
|  | FROM nginx:alpine
 | ||
|  | 
 | ||
|  | # Copy build artifacts from the previous stage to serve React.js application
 | ||
|  | COPY --from=builder /app/build /usr/share/nginx/html
 | ||
|  | 
 | ||
|  | # Expose port 80
 | ||
|  | EXPOSE 80
 | ||
|  | 
 | ||
|  | # Start Nginx when the container runs
 | ||
|  | CMD ["nginx", "-g", "daemon off;"]
 |