| 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/"] |