FROM node:22-alpine WORKDIR /app # Install pnpm RUN npm install -g pnpm # Copy workspace files COPY pnpm-workspace.yaml . COPY pnpm-lock.yaml . COPY package.json . # Copy workspace packages COPY packages/shared ./packages/shared # Copy vendor packages (workspace dependencies) COPY vendor/discord.js-selfbot-v13 ./vendor/discord.js-selfbot-v13 COPY vendor/discord-video-stream ./vendor/discord-video-stream COPY vendor/better-sqlite3 ./vendor/better-sqlite3 COPY vendor/drizzle-orm ./vendor/drizzle-orm # Copy root source (root package is a workspace member — needed for pnpm install) COPY src ./src COPY vite.backend.config.ts . # Copy services COPY services/frontend ./services/frontend COPY services/backend ./services/backend COPY services/discord-gateway ./services/discord-gateway # Install dependencies RUN pnpm install --frozen-lockfile # Build frontend RUN pnpm --filter './services/frontend' run build # Expose port (served by backend) EXPOSE 3000 # Start frontend (production preview) CMD ["pnpm", "--filter", "./services/frontend", "run", "preview", "--", "--host", "0.0.0.0"]