# Stage 1: Build FROM node:20-alpine AS builder # Set working directory WORKDIR /app # Copy package.json and package-lock.json (or yarn.lock) COPY package*.json ./ # Install dependencies RUN npm ci # Copy the rest of the app COPY . . # Build the app ARG VITE_API_BASE_URL ARG VITE_AUTH_BASE_URL RUN VITE_API_BASE_URL=$VITE_API_BASE_URL VITE_AUTH_BASE_URL=$VITE_AUTH_BASE_URL npm run build # Stage 2: Static file server (BusyBox) FROM busybox:latest WORKDIR /app # Copy only build frontend files COPY --from=builder /app/dist /app # Expose port EXPOSE 3000 # Default command CMD ["busybox", "httpd", "-f", "-p", "3000"]