# 1. Build Frontend FROM node:18-alpine AS frontend-builder WORKDIR /app/frontend COPY ThinFilm_Analyzer/frontend/package*.json ./ RUN npm install COPY ThinFilm_Analyzer/frontend/ ./ # IMPORTANT: On définit la variable d'environnement pour le build # Pour Spaces, l'URL backend est relative ou localhost interne, mais le navigateur client doit savoir où taper # En mode "Serveur Backend qui sert Frontend", l'API est sur /api, donc relative suffit. ENV VITE_API_base_url="" RUN npm run build # 2. Setup Backend FROM python:3.9 WORKDIR /app # Copie des requirements COPY ThinFilm_Analyzer/backend/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt RUN pip install huggingface_hub # Ajout de la lib HF # Copie du code backend COPY ThinFilm_Analyzer/backend/app ./app COPY ThinFilm_Analyzer/backend/main.py . # Note: On suppose que main.py dans backend/ est le point d'entrée, ou backend/app/main.py # Vérifions : backend/app/main.py est le bon fichier. Le fichier backend/main.py existe-t-il? # Dans le doute on copie tout backend vers /app COPY ThinFilm_Analyzer/backend/ . # Copie du build frontend dans le dossier statique # Le backend attend le build dans frontend/dist défini par FRONTEND_DIR # On va modifier/vérifier le chemin dans main.py ou placer le build où il faut COPY --from=frontend-builder /app/frontend/dist /app/frontend/dist # Configuration des variables d'environnement ENV FRONTEND_DIR="/app/frontend/dist" # Le dossier de données sera le cache HF, mais on peut mapper /data ENV DATA_DIR="/app/data_cache" # On crée le dossier data_cache RUN mkdir -p /app/data_cache # Exposition du port EXPOSE 7860 # Commande de lancement # Hugging Face Spaces attend le service sur le port 7860 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860"]