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 # Copy and make entrypoint executable COPY docker-entrypoint.sh /app/docker-entrypoint.sh RUN chmod +x /app/docker-entrypoint.sh EXPOSE 3001 ENTRYPOINT ["/app/docker-entrypoint.sh"]