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