FROM node:20-slim WORKDIR /app # Install dependencies needed for Prisma native binaries RUN apt-get update && apt-get install -y --no-install-recommends \ openssl \ libssl3 \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # Install pnpm RUN npm install -g pnpm # Copy package files COPY package.json pnpm-lock.yaml ./ # Install dependencies RUN pnpm install --frozen-lockfile # Copy everything else COPY . . # For HF Spaces: swap to SQLite schema AFTER COPY . . (which overwrites it) RUN cp prisma/schema.sqlite.prisma prisma/schema.prisma # Generate Prisma client for SQLite RUN npx prisma generate # Build Next.js RUN pnpm build # Create data directory for SQLite RUN mkdir -p /app/data # Run SQLite migration (ignore error if no migrations exist) RUN npx prisma migrate deploy || echo "No migrations to apply or migration skipped" # Expose HF Spaces default port EXPOSE 7860 # Start custom server (Next.js + WebSocket integrated) CMD ["npx", "tsx", "server.ts"]