# 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/testreactdatatype.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/testreactdatatype/testreactdatatype-demot1-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:43214/testreactdatatype58629/demot1 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;"]
