fenduil commited on
Commit
2ba9dc1
·
verified ·
1 Parent(s): 0f871b6

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +21 -9
Dockerfile CHANGED
@@ -2,23 +2,35 @@
2
  FROM ghcr.io/hkuds/deeptutor:latest
3
 
4
  # 2. Sécurité Hugging Face : l'image officielle tourne en "root".
5
- # Hugging Face impose un utilisateur non-privilégié (UID 1000). On ajuste les droits.
6
  USER root
7
- # Dans ton Dockerfile, juste avant le CMD :
8
- COPY model_catalog.json /app/data/user/settings/model_catalog.json
 
 
 
 
 
 
 
 
9
  RUN chown -R 1000:1000 /app && chmod -R 777 /app
10
  USER 1000
11
 
12
  # 3. On configure la variable de port pour le backend
13
  ENV BACKEND_PORT=7860
14
-
15
  ENV DEEPTUTOR_IGNORE_PROCESS_ENV_OVERRIDES=0
16
 
17
  # 4. CRUCIAL : On réinitialise l'ENTRYPOINT de l'image officielle.
18
- # L'image officielle est configurée pour lancer Supervisord (Front + Back). On désactive ce comportement.
19
  ENTRYPOINT []
20
 
21
-
22
-
23
- # 5. On lance uniquement la configuration de DeepTutor puis le serveur FastAPI sur le port 7860
24
- CMD ["bash", "-c", "python -c \"from pathlib import Path; from deeptutor.services.setup import init_user_directories; init_user_directories(Path('/app'))\" && 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"]
 
 
 
 
 
 
 
 
2
  FROM ghcr.io/hkuds/deeptutor:latest
3
 
4
  # 2. Sécurité Hugging Face : l'image officielle tourne en "root".
 
5
  USER root
6
+
7
+ # CRUCIAL : On copie ton catalogue de modèles dans un emplacement de "template" temporaire
8
+ # Car le dossier /app/data va devenir un lien vers le stockage persistant au démarrage
9
+ COPY model_catalog.json /app/model_catalog.json.template
10
+
11
+ # CONFIGURATION DE LA PERSISTANTE :
12
+ # On supprime le dossier local /app/data et on crée le lien symbolique vers ton stockage /data
13
+ RUN rm -rf /app/data && ln -s /data /app/data
14
+
15
+ # On ajuste les droits pour que l'utilisateur non-privilégié (UID 1000) puisse tout exécuter
16
  RUN chown -R 1000:1000 /app && chmod -R 777 /app
17
  USER 1000
18
 
19
  # 3. On configure la variable de port pour le backend
20
  ENV BACKEND_PORT=7860
 
21
  ENV DEEPTUTOR_IGNORE_PROCESS_ENV_OVERRIDES=0
22
 
23
  # 4. CRUCIAL : On réinitialise l'ENTRYPOINT de l'image officielle.
 
24
  ENTRYPOINT []
25
 
26
+ # 5. CMD Sécurisé et combiné :
27
+ # - a) Initialise l'arborescence de DeepTutor directement dans /data (via le lien symbolique)
28
+ # - b) Copie ton catalogue de modèles propre dans le stockage persistant
29
+ # - c) Remplace tes variables secrètes (MISTRAL, OPENAI, TAVILY) à la volée
30
+ # - d) Lance le serveur FastAPI sur le port 7860
31
+ CMD ["bash", "-c", "\
32
+ python -c \"from pathlib import Path; from deeptutor.services.setup import init_user_directories; init_user_directories(Path('/app'))\" && \
33
+ cp /app/model_catalog.json.template /app/data/user/settings/model_catalog.json && \
34
+ 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)\" && \
35
+ python -m uvicorn deeptutor.api.main:app --host 0.0.0.0 --port 7860\
36
+ "]