1# AI Software Factory — realtime gateway (ws 4001, health 4002) 2# Built from the monorepo root: docker build -f apps/realtime/Dockerfile . 3FROM node:20-alpine 4 5# pnpm via corepack (locked by the root packageManager field) 6RUN corepack enable 7ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 8 9WORKDIR /app 10 11# Install workspace dependencies for the realtime app only 12COPY pnpm-workspace.yaml package.json pnpm-lock.yaml* ./ 13COPY apps/realtime/package.json apps/realtime/package.json 14RUN --mount=type=cache,target=/root/.local/share/pnpm \ 15 pnpm install --frozen-lockfile --filter @factory/realtime... || \ 16 pnpm install --no-frozen-lockfile --filter @factory/realtime... 17 18# Build the app 19COPY tsconfig.json ./ 20COPY apps/realtime/tsconfig.json apps/realtime/tsconfig.json 21COPY apps/realtime/src apps/realtime/src 22RUN pnpm --filter @factory/realtime exec tsc -p apps/realtime/tsconfig.json 23 24# Run as a non-root user 25RUN addgroup -S app && adduser -S app -G app 26USER app 27 28EXPOSE 4001 4002 29 30CMD ["node", "dist/index.js"] 31