2026-04-16 16:23:01 +02:00

43 lines
1.6 KiB
Docker

# ── Stage 1 : build ──────────────────────────────────────────────────────────
FROM node:20-alpine AS builder
WORKDIR /workspace
RUN corepack enable && corepack prepare pnpm@9.12.0 --activate
# package.json seuls d'abord (layer cache pnpm install)
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json ./
COPY apps/api/package.json apps/api/
COPY packages/shared/package.json packages/shared/
COPY packages/db/package.json packages/db/
RUN pnpm install --frozen-lockfile
# Sources complètes
COPY . .
# Build dans l'ordre des dépendances
RUN pnpm --filter @ordinarthur-os/shared build
RUN pnpm --filter @ordinarthur-os/db build
RUN pnpm --filter @ordinarthur-os/api build
# Deploy propre : pnpm résout les workspace packages compilés vers /deploy/api
RUN pnpm --filter @ordinarthur-os/api deploy --prod /deploy/api
# ── Stage 2 : runtime ────────────────────────────────────────────────────────
FROM node:20-alpine AS runtime
WORKDIR /app
ENV NODE_ENV=production
# Deps de prod isolées (inclut @ordinarthur-os/shared+db compilés)
COPY --from=builder /deploy/api/node_modules ./node_modules
COPY --from=builder /deploy/api/package.json ./
# Code compilé de l'API
COPY --from=builder /workspace/apps/api/dist ./dist
# Migrations SQL (pour le job K3s migrate)
COPY --from=builder /workspace/packages/db/migrations ./packages/db/migrations
EXPOSE 3000
CMD ["node", "dist/main.js"]