# Stage 1: Build the React frontend FROM node:20-alpine AS frontend-builder WORKDIR /frontend # Copy package files and install dependencies COPY frontend/package*.json ./ RUN npm install # Copy source and build COPY frontend/ ./ RUN npm run build # Stage 2: Serve with nginx FROM nginx:alpine # Install openssl for self-signed certificate generation RUN apk add --no-cache openssl # Copy built frontend COPY --from=frontend-builder /frontend/dist /usr/share/nginx/html # Copy nginx config COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf # Remove default nginx config backup RUN rm -f /etc/nginx/conf.d/default.conf.bak # Copy and prepare entrypoint script COPY nginx/entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh EXPOSE 80 443 ENTRYPOINT ["/entrypoint.sh"]