# AI Software Factory — realtime gateway (ws 4001, health 4002) # Built from the monorepo root: docker build -f apps/realtime/Dockerfile . FROM node:20-alpine # pnpm via corepack (locked by the root packageManager field) RUN corepack enable ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 WORKDIR /app # Install workspace dependencies for the realtime app only COPY pnpm-workspace.yaml package.json pnpm-lock.yaml* ./ COPY apps/realtime/package.json apps/realtime/package.json RUN --mount=type=cache,target=/root/.local/share/pnpm \ pnpm install --frozen-lockfile --filter @factory/realtime... || \ pnpm install --no-frozen-lockfile --filter @factory/realtime... # Build the app COPY tsconfig.json ./ COPY apps/realtime/tsconfig.json apps/realtime/tsconfig.json COPY apps/realtime/src apps/realtime/src RUN pnpm --filter @factory/realtime exec tsc -p apps/realtime/tsconfig.json # Run as a non-root user RUN addgroup -S app && adduser -S app -G app USER app EXPOSE 4001 4002 CMD ["node", "dist/index.js"]