Spaces:
Sleeping
Sleeping
| FROM node:18 AS frontend-builder | |
| # Set working directory for frontend | |
| WORKDIR /app/frontend | |
| # Copy frontend package files and install dependencies | |
| COPY frontend/package*.json ./ | |
| RUN npm install | |
| # Copy frontend source code and build | |
| COPY frontend/ . | |
| RUN npm run build | |
| # Start with Python base image for final stage | |
| FROM python:3.9-slim | |
| WORKDIR /app | |
| # Install system dependencies and Node.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 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Create necessary directories and set permissions | |
| RUN mkdir -p ./figures ./pdfs ./src/processed_markdown \ | |
| && chown -R 1000:1000 /app | |
| # Create a user with ID 1000 (required for Hugging Face Spaces) | |
| RUN useradd -m -u 1000 user | |
| USER user | |
| ENV HOME=/home/user \ | |
| PATH=/home/user/.local/bin:$PATH \ | |
| PYTHONPATH=/app | |
| # Copy and install Python requirements | |
| COPY --chown=user requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Copy frontend build from previous stage | |
| COPY --chown=user --from=frontend-builder /app/frontend/.next ./.next | |
| COPY --chown=user --from=frontend-builder /app/frontend/public ./public | |
| COPY --chown=user --from=frontend-builder /app/frontend/package*.json ./ | |
| # Copy backend code | |
| COPY --chown=user src/ ./src/ | |
| # Install frontend production dependencies | |
| RUN npm install --production | |
| # Copy start script | |
| COPY --chown=user start.sh ./ | |
| RUN chmod +x start.sh | |
| # Start both services | |
| CMD ["./start.sh"] |