CharacLab / Dockerfile
Amirux-dev's picture
Deploy Clean (No Secrets)
13bfa71
# 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"]