FROM php:8.2-cli # 1. Instalar dependencias del sistema y extensiones PHP # libgomp1 es vital para OpenMP (multithreading de llama.cpp) RUN apt-get update && apt-get install -y \ libcurl4 \ libgomp1 \ libzip-dev \ unzip \ git \ && docker-php-ext-install zip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # 2. Instalar Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # 3. Copiar binarios pre-compilados y librerías COPY binaries/bin/* /usr/local/bin/ COPY binaries/lib/* /usr/local/lib/ # Actualizar el enlazador dinámico para que encuentre las libs en /usr/local/lib RUN ldconfig # 4. Configurar usuario no-root (Requerido por HF Spaces) RUN useradd -m -u 1000 user # 5. Preparar directorio de la aplicación WORKDIR /app RUN chown user:user /app # Cambiar a usuario USER user ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH # 6. Instalar la aplicación llama-php RUN git clone https://github.com/enacimie/llama-php . \ && composer install --no-dev --optimize-autoloader # 7. Copiar modelos locales (con permisos de usuario) COPY --chown=user:user models/ /app/models/ # 8. Exponer puerto y ejecutar EXPOSE 7860 CMD ["php", "-S", "0.0.0.0:7860", "-t", "web/"]