FROM node:22-alpine AS deps WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci FROM deps AS builder COPY prisma ./prisma RUN npx prisma generate COPY tsconfig.json ./ COPY src ./src RUN npm run build FROM deps AS runtime-deps FROM node:22-alpine AS runtime RUN apk add --no-cache curl jq WORKDIR /app COPY package.json ./ COPY --from=runtime-deps /app/node_modules ./node_modules COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma COPY --from=builder /app/node_modules/@prisma/client ./node_modules/@prisma/client COPY --from=builder /app/dist ./dist COPY prisma ./prisma COPY scripts ./scripts EXPOSE 8000 CMD ["sh", "-c", ". /app/scripts/load-vault-env.sh && set +e && npx prisma migrate resolve --applied 0_init 2>/dev/null; set -e && npx prisma migrate deploy && node dist/index.js"]