Spaces:
Running
Running
| # =============================== | |
| # HuggingFace Spaces Dockerfile | |
| # =============================== | |
| # Optimized for 16GB RAM, Port 7860 | |
| # =============================== | |
| # Stage 1: Build Frontend | |
| # =============================== | |
| FROM node:20-alpine AS frontend-builder | |
| WORKDIR /frontend | |
| COPY FRRONTEEEND/package*.json ./ | |
| RUN npm install | |
| COPY FRRONTEEEND/ ./ | |
| RUN npm run build | |
| # =============================== | |
| # Stage 2: Build Python environment | |
| # =============================== | |
| FROM python:3.12-slim AS builder | |
| # Install build dependencies (needed for ML wheels) | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| gcc \ | |
| g++ \ | |
| make \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Create virtual environment | |
| RUN python -m venv /opt/venv | |
| ENV PATH="/opt/venv/bin:$PATH" | |
| # Upgrade pip tooling | |
| RUN pip install --upgrade pip setuptools wheel | |
| # Install Python dependencies | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # =============================== | |
| # Stage 3: Runtime environment | |
| # =============================== | |
| FROM python:3.12-slim | |
| # Install runtime shared libraries | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| libgomp1 \ | |
| libstdc++6 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Copy virtual environment | |
| COPY --from=builder /opt/venv /opt/venv | |
| ENV PATH="/opt/venv/bin:$PATH" | |
| # Create non-root user for HuggingFace Spaces | |
| RUN useradd -m -u 1000 user | |
| USER user | |
| # App working directory | |
| WORKDIR /home/user/app | |
| # Copy backend code (as user) | |
| COPY --chown=user:user src/ ./src/ | |
| COPY --chown=user:user examples/ ./examples/ | |
| # Copy frontend build | |
| COPY --from=frontend-builder --chown=user:user /frontend/dist ./FRRONTEEEND/dist | |
| # HuggingFace Spaces directories (user-writable) | |
| RUN mkdir -p \ | |
| /home/user/app/data \ | |
| /home/user/app/outputs/models \ | |
| /home/user/app/outputs/plots \ | |
| /home/user/app/outputs/reports \ | |
| /home/user/app/outputs/data \ | |
| /home/user/app/cache_db | |
| # Environment variables for HuggingFace Spaces | |
| ENV PYTHONUNBUFFERED=1 | |
| ENV PORT=7860 | |
| ENV OUTPUT_DIR=/home/user/app/outputs | |
| ENV CACHE_DB_PATH=/home/user/app/cache_db/cache.db | |
| ENV ARTIFACT_BACKEND=local | |
| # YData Profiling optimization for 16GB RAM (HuggingFace Spaces) | |
| # Higher thresholds = better quality reports without sampling | |
| ENV YDATA_MAX_ROWS=200000 | |
| ENV YDATA_MAX_SIZE_MB=100 | |
| ENV YDATA_SAMPLE_SIZE=150000 | |
| # HuggingFace Spaces uses port 7860 by default | |
| EXPOSE 7860 | |
| # Start FastAPI on port 7860 | |
| CMD ["uvicorn", "src.api.app:app", "--host", "0.0.0.0", "--port", "7860"] | |