Update Dockerfile
Browse files- 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 |
-
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
#
|
| 24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
"]
|