# Utiliser Python 3.11 slim pour un conteneur léger FROM python:3.11-slim # Définir le répertoire de travail WORKDIR /app # Installer les dépendances système nécessaires pour Playwright RUN apt-get update && apt-get install -y \ wget \ gnupg \ ca-certificates \ procps \ xvfb \ libnss3 \ libnspr4 \ libdbus-1-3 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libdrm2 \ libxkbcommon0 \ libgtk-3-0 \ libgbm1 \ libasound2 \ && rm -rf /var/lib/apt/lists/* # Copier les fichiers de requirements COPY requirements.txt . # Installer les dépendances Python RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # Copier le code de l'application COPY app.py . COPY browser_mcp_server.py . # Installer les navigateurs Playwright de manière simple et directe RUN python -m playwright install chromium && \ python -m playwright install-deps && \ python -c "from playwright.sync_api import sync_playwright; p = sync_playwright().start(); print('✅ Playwright OK'); p.stop()" # Exposer le port 7860 (port standard pour HF Spaces) EXPOSE 7860 # Variables d'environnement pour HF Spaces et Playwright ENV PORT=7860 ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright ENV DISPLAY=:99 # Script pour démarrer Xvfb (display virtuel) et l'application RUN echo '#!/bin/bash\nXvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &\nexec "$@"' > /app/entrypoint.sh RUN chmod +x /app/entrypoint.sh # Commande pour démarrer l'application avec display virtuel ENTRYPOINT ["/app/entrypoint.sh"] CMD ["python", "-m", "uvicorn", "app:asgi", "--host", "0.0.0.0", "--port", "7860"]