| # 馃 GPT Local - Optimized Docker Container | |
| FROM python:3.12-alpine | |
| # Instalar dependencias del sistema necesarias | |
| RUN apk add --no-cache \ | |
| gcc \ | |
| musl-dev \ | |
| libffi-dev \ | |
| openssl-dev \ | |
| curl \ | |
| ca-certificates \ | |
| git \ | |
| && apk upgrade --no-cache | |
| # Metadata | |
| LABEL maintainer="GPT Local Team" | |
| LABEL description="Sistema de chat GPT local con Hugging Face" | |
| LABEL version="1.0" | |
| # Configurar variables de entorno | |
| ENV PYTHONPATH=/app | |
| ENV PYTHONDONTWRITEBYTECODE=1 | |
| ENV PYTHONUNBUFFERED=1 | |
| ENV HF_HOME=/app/.cache/huggingface | |
| ENV TRANSFORMERS_CACHE=/app/.cache/huggingface | |
| ENV TORCH_HOME=/app/.cache/torch | |
| # Crear directorio de trabajo | |
| WORKDIR /app | |
| # Crear usuario no privilegiado | |
| RUN addgroup -g 1000 appuser && \ | |
| adduser -D -s /bin/sh -u 1000 -G appuser appuser | |
| # Copiar y instalar dependencias | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir --upgrade pip && \ | |
| pip install --no-cache-dir -r requirements.txt | |
| # Copiar c贸digo de la aplicaci贸n | |
| COPY . . | |
| # Crear directorios necesarios con permisos apropiados | |
| RUN mkdir -p models models_cache logs .cache/huggingface .cache/torch && \ | |
| chown -R appuser:appuser /app | |
| # Cambiar a usuario no privilegiado | |
| USER appuser | |
| # Configurar permisos | |
| RUN chmod +x *.py 2>/dev/null || true && \ | |
| chmod +x *.sh 2>/dev/null || true | |
| # Exponer puerto | |
| EXPOSE 7860 | |
| # Healthcheck mejorado | |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ | |
| CMD curl -f http://localhost:7860/health || curl -f http://localhost:7860/ || exit 1 | |
| # Comando por defecto | |
| CMD ["python3", "main.py"] | |