Hacking-factory / Dockerfile
1Egyb's picture
Update Dockerfile
380a929 verified
# المرحلة 1: بناء واجهة Next.js
FROM node:18-alpine AS node_builder
WORKDIR /app
# نسخ ملفات التعريف لتثبيت المكتبات أولاً (للاستفادة من الـ Cache)
COPY frontend/package.json frontend/package-lock.json* ./
# التثبيت القسري لتجاوز تعارض إصدارات React 19 و Next 15
RUN npm install --force --legacy-peer-deps
# نسخ باقي ملفات الواجهة
COPY frontend/ .
# بناء الواجهة وتصديرها كملفات ثابتة (Static HTML)
RUN npm run build
# ---------------------------------------------------
# المرحلة 2: إعداد سيرفر البايثون (FastAPI)
FROM python:3.10-slim
WORKDIR /app
# إنشاء مستخدم بصلاحيات محدودة (متطلب Hugging Face)
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH
WORKDIR $HOME/app
# نسخ ملفات متطلبات البايثون وتثبيتها
COPY --chown=user requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# نسخ ملفات السيرفر والمكتبات الخاصة بك
COPY --chown=user scripts/ ./scripts
COPY --chown=user lib/ ./lib
#COPY --chown=user .env .env
# نقل الملفات التي تم بناؤها من مرحلة Node إلى مجلد static_ui للسيرفر
COPY --chown=user --from=node_builder /app/out ./static_ui
# نسخ كود التطبيق الرئيسي (تأكد من وجود main.py أو app.py)
COPY --chown=user . .
# تشغيل السيرفر على المنفذ 7860 (المنفذ الافتراضي لـ Hugging Face)
CMD ["python", "main.py"]