# المرحلة الأولى: بناء واجهة React FROM node:18-slim AS frontend-build WORKDIR /app/frontend COPY frontend/package*.json ./ RUN npm ci COPY frontend/ ./ ENV VITE_API_BASE_URL=/api RUN npm run build # المرحلة الثانية: تشغيل التطبيق (البيئة النهائية) FROM python:3.10-slim # تثبيت متطلبات النظام لـ OpenCV و Nginx RUN apt-get update && apt-get install -y --no-install-recommends \ libgl1 libglib2.0-0 nginx \ && rm -rf /var/lib/apt/lists/* WORKDIR /code # 1. تثبيت مكتبات البايثون (مثل طريقتك السابقة) COPY backend/requirements.txt /code/requirements.txt RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt # 2. نسخ ملفات المشروع COPY backend/ /code/backend/ COPY --from=frontend-build /app/frontend/dist /code/frontend/dist # 3. إعداد Nginx ليعمل كـ "جسر" (Bridge) # ليخدم الواجهة (Port 7860) ويمرر الطلبات للـ API (Port 8000) RUN echo 'server { \ listen 7860; \ location /api/ { proxy_pass http://127.0.0.1:8000/; } \ location / { root /code/frontend/dist; try_files $uri $uri/ /index.html; } \ }' > /etc/nginx/sites-enabled/default # 4. ملف التشغيل (Startup) RUN echo '#!/bin/bash\n\ nginx & \n\ cd /code/backend && uvicorn api:app --host 127.0.0.1 --port 8000\n\ ' > /code/start.sh && chmod +x /code/start.sh # البورت المطلوب لـ Hugging Face EXPOSE 7860 CMD ["/code/start.sh"]