FROM node:22-alpine AS base RUN corepack enable && corepack prepare pnpm@latest --activate WORKDIR /app # ── Dependencies ───────────────────────────────────────────────────────────── FROM base AS deps COPY package.json pnpm-lock.yaml ./ COPY prisma ./prisma/ RUN pnpm install --frozen-lockfile # ── Build static site ──────────────────────────────────────────────────────── FROM base AS build COPY --from=deps /app/node_modules ./node_modules COPY . . RUN pnpm prisma generate # Astro build needs DATABASE_URL at build time (passed as build arg by Coolify) ARG DATABASE_URL RUN pnpm build # ── Production ─────────────────────────────────────────────────────────────── FROM base AS production ENV NODE_ENV=production COPY --from=deps /app/node_modules ./node_modules COPY . . COPY --from=build /app/dist ./dist COPY --from=build /app/node_modules/.prisma ./node_modules/.prisma EXPOSE 3000 # Migrate DB + seed if needed + start server CMD ["sh", "-c", "pnpm prisma migrate deploy && node server.mjs"]