From ff2c2291cf1b5af4fa177d8e5d17666d9f8ca768 Mon Sep 17 00:00:00 2001 From: Ashwin Kumar Date: Fri, 10 Apr 2026 17:48:36 +0200 Subject: [PATCH] fix(docker): use Alpine and reduce memory for build - Switch from node:20-slim to node:20-alpine for smaller image - Reduce NODE_OPTIONS memory from 4096 to 2048 - Use Alpine apk instead of apt-get --- Dockerfile | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) 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