File size: 1,914 Bytes
2537f20
 
 
 
 
2ba9dc1
 
 
 
 
 
 
 
 
 
2537f20
 
 
 
 
6615573
 
2537f20
 
 
2ba9dc1
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 1. On part de l'image officielle monolithique de DeepTutor
FROM ghcr.io/hkuds/deeptutor:latest

# 2. Sécurité Hugging Face : l'image officielle tourne en "root".
USER root

# CRUCIAL : On copie ton catalogue de modèles dans un emplacement de "template" temporaire
# Car le dossier /app/data va devenir un lien vers le stockage persistant au démarrage
COPY model_catalog.json /app/model_catalog.json.template

# CONFIGURATION DE LA PERSISTANTE :
# On supprime le dossier local /app/data et on crée le lien symbolique vers ton stockage /data
RUN rm -rf /app/data && ln -s /data /app/data

# On ajuste les droits pour que l'utilisateur non-privilégié (UID 1000) puisse tout exécuter
RUN chown -R 1000:1000 /app && chmod -R 777 /app
USER 1000

# 3. On configure la variable de port pour le backend
ENV BACKEND_PORT=7860
ENV DEEPTUTOR_IGNORE_PROCESS_ENV_OVERRIDES=0

# 4. CRUCIAL : On réinitialise l'ENTRYPOINT de l'image officielle.
ENTRYPOINT []

# 5. CMD Sécurisé et combiné :
#   - a) Initialise l'arborescence de DeepTutor directement dans /data (via le lien symbolique)
#   - b) Copie ton catalogue de modèles propre dans le stockage persistant
#   - c) Remplace tes variables secrètes (MISTRAL, OPENAI, TAVILY) à la volée
#   - d) Lance le serveur FastAPI sur le port 7860
CMD ["bash", "-c", "\
python -c \"from pathlib import Path; from deeptutor.services.setup import init_user_directories; init_user_directories(Path('/app'))\" && \
cp /app/model_catalog.json.template /app/data/user/settings/model_catalog.json && \
python -c \"import os; p='/app/data/user/settings/model_catalog.json'; txt=open(p).read().replace('HF_SECRET_MISTRAL', os.getenv('MISTRAL_API_KEY','')).replace('HF_SECRET_OPENAI', os.getenv('OPENAI_API_KEY','')).replace('HF_SECRET_TAVILY', os.getenv('TAVILY_API_KEY','')); open(p,'w').write(txt)\" && \
python -m uvicorn deeptutor.api.main:app --host 0.0.0.0 --port 7860\
"]