# syntax=docker/dockerfile:1.7 FROM node:22-alpine AS deps RUN apk add --no-cache libc6-compat WORKDIR /app COPY package.json pnpm-lock.yaml* pnpm-workspace.yaml* ./ RUN corepack enable && pnpm install --frozen-lockfile # Dev: Vite HMR on port 3000 + Hono CK server on port 3001 FROM node:22-alpine AS dev RUN apk add --no-cache libc6-compat WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . ENV NODE_ENV=development EXPOSE 3000 CMD ["sh", "-c", "corepack enable && pnpm dev"] # Build Vite SPA FROM node:22-alpine AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . RUN corepack enable && pnpm build # Production: Hono serves dist/ + /api/copilotkit on port 3000 FROM node:22-alpine AS runner RUN apk add --no-cache libc6-compat WORKDIR /app ENV NODE_ENV=production COPY --from=deps /app/node_modules ./node_modules COPY --from=builder /app/dist ./dist COPY server.ts package.json ./ EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=3s --retries=3 \ CMD wget -qO- http://127.0.0.1:3000/api/health || exit 1 CMD ["sh", "-c", "corepack enable && tsx server.ts"]