FROM node:20-alpine AS base RUN corepack enable && corepack prepare pnpm@latest --activate WORKDIR /app FROM base AS deps COPY pnpm-lock.yaml pnpm-workspace.yaml package.json tsconfig.base.json ./ COPY packages/shared/package.json packages/shared/ COPY packages/shared/tsconfig.json packages/shared/ COPY packages/mcp/package.json packages/mcp/ COPY packages/mcp/tsconfig.json packages/mcp/ COPY prisma/ prisma/ RUN pnpm install --frozen-lockfile FROM base AS build COPY --from=deps /app/ ./ COPY packages/shared/ packages/shared/ COPY packages/mcp/ packages/mcp/ COPY prisma/ prisma/ COPY tsconfig.base.json ./ RUN npx prisma generate --schema=prisma/schema.prisma RUN pnpm --filter @agent-fox/shared build RUN pnpm --filter @agent-fox/mcp build FROM node:20-alpine AS runtime WORKDIR /app COPY --from=build /app/node_modules ./node_modules COPY --from=build /app/packages/shared/dist ./packages/shared/dist COPY --from=build /app/packages/shared/node_modules ./packages/shared/node_modules COPY --from=build /app/packages/shared/package.json ./packages/shared/ COPY --from=build /app/packages/mcp/dist ./packages/mcp/dist COPY --from=build /app/packages/mcp/node_modules ./packages/mcp/node_modules COPY --from=build /app/packages/mcp/package.json ./packages/mcp/ COPY --from=build /app/prisma ./prisma WORKDIR /app/packages/mcp EXPOSE 3001 CMD ["node", "dist/index.js"]