# 🐍 Usar Python 3.11 como base FROM python:3.11-slim # 🧰 Instalar dependencias del sistema RUN apt-get update && apt-get install -y \ pandoc \ build-essential \ && rm -rf /var/lib/apt/lists/* # 📁 Establecer directorio de trabajo WORKDIR /app # 📦 Copiar los archivos de requisitos primero para aprovechar caché COPY requirements.txt . # 🔧 Instalar dependencias de Python RUN pip install --no-cache-dir -r requirements.txt # 🗂️ Crear estructura de carpetas necesarias RUN mkdir -p config database/edullm_store docs logs /app/cache # 🧠 Configurar caché de modelos de Hugging Face para evitar errores de permisos ENV TRANSFORMERS_CACHE=/app/cache ENV HF_HOME=/app/cache # (Opcional pero recomendable) Forzar descarga del modelo para evitar que lo haga en tiempo de ejecución # RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('all-MiniLM-L6-v2')" # 📁 Copiar el resto del código al contenedor COPY . . # 🧾 Asegurar que exista la base de datos y el prompt RUN touch database/edullm_store/.gitkeep && \ touch config/prompt_system.txt # 🔒 Asignar permisos adecuados RUN chmod -R 755 /app && \ chmod -R 777 database/ logs/ docs/ cache && \ chmod 644 config/.env config/prompt_system.txt # 🌐 Exponer el puerto requerido por Hugging Face Spaces (FastAPI) EXPOSE 7860 # 🚀 Comando para ejecutar FastAPI con Uvicorn CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]