# Build stage FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Production stage FROM nginx:alpine RUN apk add --no-cache openssl \ && mkdir -p /etc/nginx/certs \ && openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout /etc/nginx/certs/surclaw-demo.key \ -out /etc/nginx/certs/surclaw-demo.crt \ -subj "/CN=localhost" \ -addext "subjectAltName=DNS:localhost,IP:127.0.0.1" COPY --from=builder /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 EXPOSE 443 CMD ["nginx", "-g", "daemon off;"]