# Stage 1: Build the application FROM node:24-slim AS builder # Enable corepack to use pnpm RUN corepack enable WORKDIR /app # Copy configuration files COPY package.json pnpm-lock.yaml .npmrc ./ # Install all dependencies (including devDependencies) RUN pnpm install --frozen-lockfile # Copy the rest of the application code COPY . . # Build the SvelteKit application RUN pnpm run build # Stage 2: Run the application FROM node:24-slim AS runner # Enable corepack to use pnpm RUN corepack enable WORKDIR /app # Copy the build output and necessary files for production COPY --from=builder /app/build ./build COPY --from=builder /app/package.json ./package.json COPY --from=builder /app/pnpm-lock.yaml ./pnpm-lock.yaml COPY --from=builder /app/.npmrc ./.npmrc # Install only production dependencies RUN pnpm install --prod --frozen-lockfile # Expose the port the app runs on (SvelteKit defaults to 3000) EXPOSE 3000 # Set environment variables ENV NODE_ENV=production ENV PORT=3000 # Run the application CMD ["node", "build"]