# Use an official Python slim image as the base FROM python:3.10-slim # Install system dependencies and Node.js (for Next.js) RUN apt-get update && apt-get install -y curl && \ curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \ apt-get install -y nodejs && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # Set the working directory WORKDIR /app # ========================================== # 1. Setup Backend (Python) # ========================================== COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # ========================================== # 2. Setup Frontend (Node.js) # ========================================== WORKDIR /app/frontend # Copy package.json from your frontend folder COPY frontend/package*.json ./ RUN npm install # Copy the remaining files from your frontend folder (if any) COPY frontend/ ./ # MAGIC TRICK: Copy the scattered files from the ROOT into the container's frontend folder COPY src/ ./src/ COPY tailwind.config.js ./ COPY tsconfig.json ./ COPY postcss.config.js ./ # Build the Next.js app RUN npm run build # ========================================== # 3. Copy Backend Source and Startup Script # ========================================== WORKDIR /app # Copy the backend folder COPY backend/ ./backend/ # Copy start script COPY start.sh ./ RUN chmod +x start.sh # Expose the port Hugging Face Spaces expects EXPOSE 7860 # Execute the startup script CMD ["./start.sh"]