49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Docker
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Docker
		
	
	
		
			Executable File
		
	
	
	
	
| # 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;"]
 |