diff --git a/Dockerfile b/Dockerfile index e772e02..0cd407d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,24 +1,32 @@ -FROM node:20-slim AS builder +# Multi-stage build with memory optimization +FROM node:20-alpine AS builder WORKDIR /app +# Skip browser downloads ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 ENV CYPRESS_INSTALL_BINARY=0 -RUN apt-get update && apt-get install -y \ - python3 \ - make \ - g++ \ - && rm -rf /var/lib/apt/lists/* +# Install build dependencies +RUN apk add --no-cache python3 make g++ +# Copy package files COPY package*.json ./ -RUN npm install --legacy-peer-deps +# Install dependencies with reduced memory +RUN npm install --legacy-peer-deps --prefer-offline --no-audit + +# Copy source COPY . . -RUN NODE_OPTIONS="--max-old-space-size=4096" npm run build +# Build with memory optimization (reduced from 4096 to 2048 for Alpine) +ENV NODE_OPTIONS="--max-old-space-size=2048" +RUN npm run build + +# Runtime stage FROM node:20-alpine WORKDIR /app +# Copy built output COPY --from=builder /app/.output ./.output ENV PORT=9202