FROM node:24-bookworm-slim AS build WORKDIR /repo/apps/studio RUN corepack enable && corepack prepare pnpm@11.25.0 --activate COPY apps/studio/pnpm-lock.yaml ./ COPY pnpm-workspace.yaml /repo/pnpm-workspace.yaml COPY packages/brand/ /repo/packages/brand/ COPY apps/studio/package.json ./ RUN pnpm --filter @prompt/studio install --frozen-lockfile --fetch-timeout=300000 --network-concurrency=8 COPY apps/studio/ . # Compare the two public parameter validators inside the isolated CI build. COPY apps/waterfall-wiki/src/lib/layout-parameters.ts /repo/apps/waterfall-wiki/src/lib/layout-parameters.ts COPY apps/waterfall-wiki/src/lib/series.ts /repo/apps/waterfall-wiki/src/lib/series.ts COPY apps/waterfall-wiki/src/lib/canvas-document.ts /repo/apps/waterfall-wiki/src/lib/canvas-document.ts RUN pnpm typecheck && pnpm test && pnpm build && pnpm test:smoke FROM node:24-bookworm-slim WORKDIR /app ENV NODE_ENV=production HOSTNAME=0.0.0.0 PORT=3000 COPY --from=build --chown=node:node /repo/apps/studio/.next/standalone/ ./ COPY --from=build --chown=node:node /repo/apps/studio/.next/static/ ./.next/static/ COPY --from=build --chown=node:node /repo/apps/studio/public/ ./public/ USER node EXPOSE 3000 CMD ["node", "server.js"]