Spaces:
Running
Running
| # المرحلة الأولى: بناء واجهة 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"] |