# syntax=docker/dockerfile:1 # ---- Build stage: compile the Vite/SolidJS app to static files ---- FROM node:24-alpine AS build WORKDIR /app # pnpm ships with Node via corepack; pin to the version that produced pnpm-lock.yaml. RUN corepack enable && corepack prepare pnpm@10.33.0 --activate # Install deps first so this layer is cached unless the manifest/lockfile change. COPY package.json pnpm-lock.yaml ./ RUN pnpm install --frozen-lockfile # Build (`tsc && vite build` → /app/dist). devDependencies are needed here. COPY . . RUN pnpm build # ---- Serve stage: static files via `serve` ---- FROM node:24-alpine AS serve WORKDIR /app # `serve` (what `npx serve` runs) — installed at build time so the image is self-contained. RUN npm install -g serve@14 COPY --from=build /app/dist ./dist EXPOSE 3000 CMD ["serve", "-s", "dist", "-l", "3000"]