# ThreatHunt Frontend - Node.js React FROM node:20-alpine AS builder WORKDIR /app # Copy package files COPY frontend/package.json frontend/package-lock.json* ./ # Install dependencies RUN npm ci # Copy source COPY frontend/public ./public COPY frontend/src ./src COPY frontend/tsconfig.json ./ # Build application RUN npm run build # Production stage — nginx reverse-proxy + static files FROM nginx:alpine # Copy built React app COPY --from=builder /app/build /usr/share/nginx/html # Copy custom nginx config (proxies /api to backend) COPY frontend/nginx.conf /etc/nginx/conf.d/default.conf # Expose port EXPOSE 3000 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD wget --quiet --tries=1 --spider http://localhost:3000/ || exit 1 CMD ["nginx", "-g", "daemon off;"]