# Build stage FROM node:22-alpine AS builder WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies RUN npm ci --prefer-offline --no-audit # Copy source code COPY . . # Build the application RUN npm run build # Production stage - use nginx to serve static files FROM nginx:alpine # Copy nginx config COPY nginx.conf /etc/nginx/nginx.conf # Copy built app from builder stage COPY --from=builder /app/dist /usr/share/nginx/html # Copy entrypoint script to nginx entrypoint.d directory # This will run before nginx starts and generate env.js from API_BASE env var COPY 10-generate-env.sh /docker-entrypoint.d/10-generate-env.sh # Ensure entrypoint script is executable RUN chmod +x /docker-entrypoint.d/10-generate-env.sh EXPOSE 80 # nginx will start automatically; our script in /docker-entrypoint.d runs first