Spaces:
Paused
Paused
| # Usa un'immagine Python ufficiale | |
| FROM python:3.10-slim | |
| # Imposta la cartella di lavoro nell'immagine | |
| WORKDIR /app | |
| # Copia il file delle dipendenze e installale | |
| COPY requirements.txt requirements.txt | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # --- AGGIUNGI QUESTA RIGA PER LA SESSIONE --- | |
| # Crea la cartella scrivibile per i file di sessione | |
| RUN mkdir -p /data/flask_sessions && chmod 777 /data/flask_sessions | |
| # Crea cartella per offload (necessaria per device_map="auto") | |
| # --- PRE-CARICA MODELLO E TOKENIZER IN /data/hf_cache --- | |
| RUN mkdir -p /data/hf_cache && \ | |
| python -c "\ | |
| from transformers import AutoTokenizer, AutoModelForCausalLM; \ | |
| import os; \ | |
| os.environ['HF_HOME'] = '/data/hf_cache'; \ | |
| print('Scarico tokenizer...'); \ | |
| AutoTokenizer.from_pretrained('microsoft/Phi-4', cache_dir='/data/hf_cache'); \ | |
| print('Tokenizer scaricato.'); \ | |
| " && \ | |
| echo "Modello pre-scaricato in /data/hf_cache" | |
| # --- FINE PRE-CARICA --- | |
| # === FIX DEFINITIVO PER getpwuid(): uid not found: 1000 === | |
| RUN adduser --uid 1000 --disabled-password --gecos '' appuser && \ | |
| mkdir -p /home/appuser && \ | |
| chown -R appuser:appuser /home/appuser | |
| # Imposta utente e home | |
| USER appuser | |
| ENV HOME=/home/appuser | |
| ENV USER=appuser | |
| # === FINE FIX === | |
| # | |
| # Crea offload folder con permissions corrette | |
| RUN mkdir -p /tmp/offload && \ | |
| chown -R appuser:appuser /tmp/offload | |
| # Copia tutto il resto del tuo progetto | |
| COPY . . | |
| # Esponi la porta richiesta da Hugging Face | |
| EXPOSE 7860 | |
| # Questo farà sì che i tuoi comandi print() appaiano | |
| # nei log in tempo reale, proprio come i logger.info(). | |
| # | |
| ENV PYTHONUNBUFFERED=1 | |
| # | |
| # Questo comando è CORRETTO. | |
| # 1. Esegue la funzione Python, che (grazie alla tua modifica ad app.py) | |
| # creerà il db in /data/lifecoach.db | |
| # 2. Avvia Gunicorn sulla porta 7860 con i log attivati. | |
| # | |
| CMD python -c "from app import initialize_database; initialize_database()" && \ | |
| gunicorn --bind 0.0.0.0:7860 --workers 1 --threads 8 --timeout 300 --log-level=info --log-file=- app:app |