FROM node:20-alpine WORKDIR /app # Install build tools + OpenSSL (required by Prisma query engine on Alpine) RUN apk add --no-cache python3 make g++ openssl openssl-dev # Copy package manifests COPY package*.json ./ COPY client/package*.json ./client/ # Install all dependencies (dev deps needed for prisma CLI + tsc build) RUN npm install RUN cd client && npm install # Copy source COPY . . # Generate Prisma client for target platform (must happen before tsc) RUN npx prisma generate # Build server (tsc) + client (vite) RUN npm run build # Ensure data directory exists for SQLite bind mount RUN mkdir -p /app/data EXPOSE 3001 # Apply pending migrations then start CMD ["sh", "-c", "npx prisma migrate deploy && node dist/server/index.js"]