Spaces:
Build error
Build error
| # Build frontend | |
| FROM node:18 as frontend-build | |
| WORKDIR /app | |
| COPY frontend/package*.json ./ | |
| # Configurer le registre npm miroir pour éviter les erreurs 403 | |
| RUN npm config set registry https://registry.npmmirror.com/ | |
| RUN npm install | |
| COPY frontend/ ./ | |
| # Set environment variable for production build | |
| ENV REACT_APP_NODE_ENV=production | |
| RUN npm run build | |
| # Build backend | |
| FROM python:3.12-slim | |
| WORKDIR /app | |
| # Install system dependencies required for UV, Git and Node.js | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| curl ca-certificates git netcat-openbsd && \ | |
| curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \ | |
| apt-get install -y nodejs && \ | |
| rm -rf /var/lib/apt/lists/* | |
| # Install UV (fast Python dependency manager) | |
| RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \ | |
| mv /root/.local/bin/uv /usr/local/bin/uv && chmod +x /usr/local/bin/uv | |
| # Verify UV installation | |
| RUN uv --version | |
| # Create non-root user | |
| RUN useradd -m -u 1000 user | |
| # Create and configure cache directory | |
| RUN mkdir -p /app/.cache && \ | |
| chown -R user:user /app | |
| # Copy all backend code first | |
| COPY backend/ . | |
| # Install all dependencies explicitly | |
| RUN pip install fastapi uvicorn | |
| # Install project dependencies | |
| RUN uv pip install -e . --system | |
| # Copy frontend server and build | |
| COPY --from=frontend-build /app/build ./frontend/build | |
| COPY --from=frontend-build /app/package*.json ./frontend/ | |
| COPY --from=frontend-build /app/server.js ./frontend/ | |
| # Install frontend production dependencies | |
| WORKDIR /app/frontend | |
| # Configurer le registre npm miroir pour éviter les erreurs 403 | |
| RUN npm config set registry https://registry.npmmirror.com/ | |
| RUN npm install --production | |
| WORKDIR /app | |
| # Environment variables | |
| ENV HF_HOME=/app/.cache \ | |
| HF_DATASETS_CACHE=/app/.cache \ | |
| INTERNAL_API_PORT=7861 \ | |
| PORT=7860 \ | |
| NODE_ENV=production | |
| # Note: HF_TOKEN should be provided at runtime, not build time | |
| USER user | |
| EXPOSE 7860 7861 | |
| # Start both servers with wait-for | |
| CMD ["sh", "-c", "uvicorn main:app --host 0.0.0.0 --port 7861 & while ! nc -z 127.0.0.1 7861; do sleep 1; done && cd frontend && npm run serve"] |