Spaces:
Sleeping
Sleeping
| # Dockerfile | |
| # --- Этап 1: Сборка статического фронтенда --- | |
| # Мы используем легковесный образ Node.js для сборки React-приложения | |
| FROM node:18-alpine AS frontend-builder | |
| WORKDIR /app/frontend | |
| # Копируем только package.json, чтобы кэшировать установку зависимостей | |
| COPY frontend/package.json ./ | |
| COPY frontend/package-lock.json ./ | |
| RUN npm install | |
| # Копируем весь остальной код фронтенда и запускаем сборку | |
| COPY frontend/ ./ | |
| # Важно: Убедитесь, что в вашем package.json есть скрипт "build" | |
| # Обычно он выглядит так: "build": "vite build" или "react-scripts build" | |
| RUN npm run build | |
| # --- Этап 2: Настройка Python-окружения и бэкенда --- | |
| # Используем официальный образ Python | |
| FROM python:3.10-slim | |
| ENV PYTHONDONTWRITEBYTECODE=1 | |
| ENV PYTHONUNBUFFERED=1 | |
| WORKDIR /app | |
| # Устанавливаем системные зависимости, если они нужны | |
| # (например, для компиляции C++ расширений в ReConV2) | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Устанавливаем Python-зависимости | |
| COPY backend/requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Копируем код бэкенда | |
| COPY backend/ . | |
| # Если у ReConV2 есть C++ расширения, которые нужно компилировать, | |
| # раскомментируйте и адаптируйте следующую строку: | |
| # RUN cd /app/ReConV2/extensions/ && python setup.py install | |
| # --- Этап 3: Финальный образ --- | |
| # Копируем собранный фронтенд из первого этапа в папку 'static' | |
| # FastAPI будет автоматически раздавать файлы из этой папки | |
| COPY --from=frontend-builder /app/frontend/dist ./static | |
| # Открываем порт, на котором будет работать FastAPI (стандартный для HF Spaces) | |
| EXPOSE 7860 | |
| # Запускаем наш API-сервер с помощью Uvicorn | |
| CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"] |