FROM node:24-alpine AS build RUN apk add --no-cache openssl WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci COPY prisma ./prisma COPY prisma.config.ts ./ COPY src ./src COPY tsconfig.json ./ # Prisma 7 não lê mais a URL de conexão do schema — só do prisma.config.ts # (ver src/lib/prisma.ts) — mas carregar esse config, mesmo só pra gerar o # client, já valida que a env var existe. Nesta etapa de build não há banco # de verdade (a URL real vem do docker-compose em runtime), então um # placeholder sintaticamente válido basta. RUN DATABASE_URL="postgresql://placeholder:placeholder@localhost:5432/placeholder" npx prisma generate RUN npm run build FROM node:24-alpine RUN apk add --no-cache openssl WORKDIR /app ENV NODE_ENV=production COPY package.json package-lock.json ./ RUN npm ci --omit=dev COPY --from=build /app/dist ./dist COPY prisma ./prisma COPY prisma.config.ts ./ COPY docker-entrypoint.sh ./ RUN chmod +x docker-entrypoint.sh EXPOSE 3333 ENTRYPOINT ["./docker-entrypoint.sh"]