# -------- STAGE 1: Builder (full environment with Node + Bun) -------- FROM node:latest AS builder RUN npm install -g bun WORKDIR /app COPY package.json ./ RUN bun install --production # Copy project files COPY . . # -------- STAGE 2: Runtime (playwright environment) -------- FROM mcr.microsoft.com/playwright:v1.58.2-noble USER root RUN npm install -g bun WORKDIR /app COPY --from=builder /app ./ RUN chown -R pwuser:pwuser /app USER pwuser RUN npx puppeteer browsers install chrome RUN npx puppeteer browsers install chrome-headless-shell ENV APP_ENV="prod" ENV NODE_ENV=production ENV PORT=7860 EXPOSE 7860 # Run prebuilt output CMD ["bun", "run", "start:prod:tsdown"]