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/server/package.json packages/server/ COPY packages/server/tsconfig.json packages/server/ COPY prisma/ prisma/ RUN pnpm install --frozen-lockfile FROM base AS build COPY --from=deps /app/ ./ COPY packages/shared/ packages/shared/ COPY packages/server/ packages/server/ 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/server 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/server/dist ./packages/server/dist COPY --from=build /app/packages/server/node_modules ./packages/server/node_modules COPY --from=build /app/packages/server/package.json ./packages/server/ COPY --from=build /app/prisma ./prisma COPY scripts/migrate-and-start.sh ./scripts/ RUN chmod +x scripts/migrate-and-start.sh RUN npm install -g prisma@6 EXPOSE 3000 CMD ["sh", "scripts/migrate-and-start.sh"]