Spaces:
Sleeping
Sleeping
| # ============================================================================= | |
| # Dockerfile para HuggingFace Spaces — GeoVision-CLIP Cali | |
| # SDK: Docker (puerto 7860) | |
| # Build: docker build -t geovision-clip . | |
| # ============================================================================= | |
| FROM node:20-slim AS frontend-builder | |
| WORKDIR /app | |
| COPY app/geo-vision-clip-application/ . | |
| # Build frontend | |
| RUN npm install -g pnpm && \ | |
| pnpm install && \ | |
| NODE_ENV=production pnpm build | |
| # ============================================================================= | |
| FROM python:3.11-slim | |
| WORKDIR /app | |
| # Variables de entorno | |
| ENV MODE=prod \ | |
| DEVICE=cpu \ | |
| PYTHONUNBUFFERED=1 \ | |
| PYTHONDONTWRITEBYTECODE=1 \ | |
| HF_HUB_DISABLE_SYMLINKS_WARNING=1 | |
| # Dependencias del sistema | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Backend Python + modelos (todo en UN solo RUN para evitar caché parcial) | |
| COPY app/geo-vision-clip-application/backend/requirements.txt /app/backend/requirements.txt | |
| RUN pip install --no-cache-dir \ | |
| -r /app/backend/requirements.txt \ | |
| torch>=2.1.0 \ | |
| torchvision>=0.16.0 \ | |
| open-clip-torch>=2.24.0 \ | |
| transformers>=4.36.0 \ | |
| huggingface_hub>=0.20.0 \ | |
| sentencepiece>=0.1.99 \ | |
| tifffile \ | |
| pykrige \ | |
| scipy \ | |
| pandas>=2.0.0 \ | |
| scikit-learn>=1.3.0 \ | |
| pyarrow>=14.0.0 | |
| # Copiar backend | |
| COPY app/geo-vision-clip-application/backend/ /app/backend/ | |
| # Copiar frontend build desde stage anterior | |
| COPY --from=frontend-builder /app/out/ /app/frontend/ | |
| # Copiar checkpoints (si existen en build context) | |
| COPY app/geo-vision-clip-application/backend/checkpoints/ /app/backend/checkpoints/ | |
| # Puerto de HuggingFace Spaces | |
| EXPOSE 7860 | |
| # Script de entrada: descarga checkpoints si faltan, luego arranca servidor | |
| COPY docker-entrypoint.sh /app/docker-entrypoint.sh | |
| RUN chmod +x /app/docker-entrypoint.sh | |
| ENTRYPOINT ["/app/docker-entrypoint.sh"] | |
| CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "7860"] | |