fix(docker): use npm ci and set NODE_ENV=production

- Use npm ci for cleaner installs

- Set NODE_ENV=production

- Fallback to npm install if npm ci fails
This commit is contained in:
Ashwin Kumar 2026-04-10 18:17:36 +02:00
parent c68494d79b
commit dc3c53e3e7
2 changed files with 13 additions and 7 deletions

View file

@ -1,10 +1,11 @@
# Multi-stage build - using slim for better compatibility
# Multi-stage build with memory optimization
FROM node:20-slim AS builder
WORKDIR /app
# Skip browser downloads
ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
ENV CYPRESS_INSTALL_BINARY=0
ENV NODE_ENV=production
# Install build dependencies
RUN apt-get update && apt-get install -y python3 make g++ git && rm -rf /var/lib/apt/lists/*
@ -13,16 +14,16 @@ RUN apt-get update && apt-get install -y python3 make g++ git && rm -rf /var/lib
COPY package*.json ./
# Install dependencies
RUN npm install --legacy-peer-deps --prefer-offline --no-audit
RUN npm ci --legacy-peer-deps --prefer-offline --no-audit || npm install --legacy-peer-deps --prefer-offline --no-audit
# Copy source
COPY . .
# Build with memory optimization (3GB for slim image)
ENV NODE_OPTIONS="--max-old-space-size=3072"
# Build with memory optimization
ENV NODE_OPTIONS="--max-old-space-size=4096"
RUN npm run build
# Runtime stage - use alpine for smaller size
# Runtime stage
FROM node:20-alpine
WORKDIR /app

View file

@ -27,8 +27,9 @@ vinxi starting dev server
5:56:23 PM [vite] (ssr) page reload .woodpecker.yml
6:10:53 PM [vite] (ssr) page reload Dockerfile
6:11:15 PM [vite] (ssr) page reload Dockerfile
AM [vite] (client) page reload .woodpecker.yml
5:23:49 AM [vite] (ssr) page reload .woodpecker.yml
6:17:06 PM [vite] (ssr) page reload Dockerfile
6:17:27 PM [vite] (ssr) page reload Dockerfile
.yml
5:23:49 AM [vite] (client) page reload .woodpecker.yml
5:26:46 AM [vite] (ssr) page reload .woodpecker.yml
5:26:46 AM [vite] (client) page reload .woodpecker.yml
@ -54,3 +55,7 @@ AM [vite] (client) page reload .woodpecker.yml
6:10:53 PM [vite] (client) page reload Dockerfile
6:11:15 PM [vite] (ssr) page reload Dockerfile
6:11:15 PM [vite] (client) page reload Dockerfile
6:17:06 PM [vite] (ssr) page reload Dockerfile
6:17:06 PM [vite] (client) page reload Dockerfile
6:17:27 PM [vite] (ssr) page reload Dockerfile
6:17:27 PM [vite] (client) page reload Dockerfile