49 lines
1.3 KiB
Docker
Raw Normal View History

2025-06-13 05:32:40 +00:00
# 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;"]