diff --git a/Dockerfile b/Dockerfile index 8c4889a..dbb1a8b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,13 +2,29 @@ FROM node:24-alpine AS builder WORKDIR /app +# Install Chromium and dependencies for Playwright in a single layer +RUN apk add --no-cache \ + chromium \ + nss \ + freetype \ + freetype-dev \ + harfbuzz \ + ca-certificates \ + ttf-freefont \ + curl \ + && rm -rf /var/cache/apk/* + +# Tell Playwright to use the installed Chromium +ENV PLAYWRIGHT_BROWSERS_PATH=/usr/bin +ENV PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium-browser + # Install pnpm RUN npm i -g pnpm # Copy package files COPY package.json pnpm-lock.yaml ./ -# Install dependencies +# Install all dependencies (including dev dependencies for build) RUN pnpm install --frozen-lockfile # Copy source code @@ -17,19 +33,7 @@ COPY . . # Build the application RUN pnpm run build -# Production stage -FROM mcr.microsoft.com/playwright:v1.50.0-noble AS runtime - -WORKDIR /app - -# Install pnpm -RUN npm i -g pnpm - -# Copy built application and package files -COPY --from=builder /app/dist ./dist -COPY --from=builder /app/package.json /app/pnpm-lock.yaml ./ - -# Install production dependencies and clean up in one layer +# Install only production dependencies and clean up RUN pnpm install --prod --frozen-lockfile \ && pnpm store prune \ && npm cache clean --force