# syntax=docker/dockerfile:1.7
ARG NODE_VERSION=22.23.2-alpine3.24
FROM node:${NODE_VERSION} AS base
RUN apk add --no-cache libc6-compat
RUN corepack enable && corepack prepare pnpm@10.13.1 --activate
WORKDIR /app
ENV TZ=UTC

FROM base AS deps
COPY pnpm-workspace.yaml pnpm-lock.yaml package.json .npmrc* ./
COPY turbo.json tsconfig.base.json ./
COPY apps/ai-web/package.json apps/ai-web/
COPY packages/types/package.json packages/types/
COPY packages/utils/package.json packages/utils/
COPY packages/design-tokens/package.json packages/design-tokens/
RUN pnpm install --frozen-lockfile

FROM deps AS build
COPY . .
RUN pnpm --workspace-concurrency=1 --filter '@pac/ai-web^...' build
WORKDIR /app/apps/ai-web
RUN pnpm build && mkdir -p public

FROM node:${NODE_VERSION} AS prod
RUN apk add --no-cache libc6-compat
WORKDIR /app
ENV NODE_ENV=production TZ=UTC HOSTNAME=0.0.0.0 PORT=3103
COPY --from=build /app/apps/ai-web/.next/standalone ./
COPY --from=build /app/apps/ai-web/.next/static ./apps/ai-web/.next/static
COPY --from=build /app/apps/ai-web/public ./apps/ai-web/public
EXPOSE 3103
CMD ["node", "apps/ai-web/server.js"]
