# ==== Tripz backend — multi-stage Docker build ==== # البناء والتشغيل كله داخل Docker (لا تثبيت محلي على الماك) # ---- builder ---- FROM node:22-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build # بوابة الجودة: الاختبارات تعمل هنا — أي على السيرفر وقت البناء، لا على الماك # (قاعدة docs/15). تعتمد pg-mem و ioredis-mock فقط: بلا شبكة وبلا قاعدة حقيقية. # فشل أي اختبار = فشل البناء = لا نشر لكود مكسور. RUN npm test # ---- runtime ---- FROM node:22-alpine AS runtime WORKDIR /app ENV NODE_ENV=production COPY package*.json ./ RUN npm install --omit=dev COPY --from=builder /app/dist ./dist EXPOSE 4010 # نقطة الدخول الافتراضية: الـ API. الـ worker يُشغَّل بأمر مختلف من compose. CMD ["node", "dist/main.js"]