Spaces:
Sleeping
Sleeping
| # docker-compose.yml β Picarones | |
| # | |
| # Services disponibles : | |
| # - picarones : interface web + benchmarks (port 7860) | |
| # - ollama : LLMs locaux (port 11434, profil optionnel) | |
| # | |
| # Usage : | |
| # docker compose up -d # Picarones seul | |
| # docker compose --profile ollama up -d # Picarones + Ollama | |
| # docker compose down | |
| # | |
| # Variables d'environnement : | |
| # CrΓ©er un fichier .env Γ la racine (voir .env.example) | |
| # | |
| # Defaults fail-closed (P0 durcissement) : | |
| # - le port n'est publiΓ© que sur 127.0.0.1 (poser PICARONES_BIND=0.0.0.0 | |
| # pour exposer délibérément derrière un reverse-proxy/TLS) ; | |
| # - PICARONES_PUBLIC_MODE=1 par dΓ©faut : moteurs OCR cloud + LLM | |
| # mutualisΓ©s dΓ©sactivΓ©s, browse roots confinΓ©s ; | |
| # - PICARONES_CSRF_REQUIRED=1 par dΓ©faut. | |
| # Un opΓ©rateur institutionnel surcharge ces valeurs en connaissance | |
| # de cause via .env ; l'inverse (ouvert par dΓ©faut) serait un foot-gun. | |
| services: | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Service principal : Picarones | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| picarones: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| target: runtime | |
| image: picarones:latest | |
| container_name: picarones | |
| restart: unless-stopped | |
| ports: | |
| # Bind localhost par dΓ©faut β exposition LAN/WAN = choix explicite. | |
| - "${PICARONES_BIND:-127.0.0.1}:${PICARONES_PORT:-7860}:7860" | |
| volumes: | |
| # Corpus Γ benchmarker (lecture seule) | |
| - "${CORPUS_DIR:-./corpus}:/app/corpus:ro" | |
| # Rapports gΓ©nΓ©rΓ©s (lecture/Γ©criture) | |
| - "${RAPPORTS_DIR:-./rapports}:/app/rapports:rw" | |
| # Historique SQLite (persistant) | |
| - picarones_history:/home/picarones/.picarones | |
| environment: | |
| # LLM APIs | |
| - OPENAI_API_KEY=${OPENAI_API_KEY:-} | |
| - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-} | |
| - MISTRAL_API_KEY=${MISTRAL_API_KEY:-} | |
| # OCR cloud APIs | |
| - GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_APPLICATION_CREDENTIALS:-} | |
| - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-} | |
| - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-} | |
| - AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION:-eu-west-1} | |
| - AZURE_DOC_INTEL_ENDPOINT=${AZURE_DOC_INTEL_ENDPOINT:-} | |
| - AZURE_DOC_INTEL_KEY=${AZURE_DOC_INTEL_KEY:-} | |
| # Ollama (si le service ollama est actif) | |
| - OLLAMA_BASE_URL=http://ollama:11434 | |
| # SΓ©curitΓ© β fail-closed par dΓ©faut (cf. en-tΓͺte du fichier). | |
| # Surcharger explicitement dans .env pour un dΓ©ploiement | |
| # institutionnel derrière SSO/reverse-proxy. | |
| - PICARONES_PUBLIC_MODE=${PICARONES_PUBLIC_MODE:-1} | |
| - PICARONES_CSRF_REQUIRED=${PICARONES_CSRF_REQUIRED:-1} | |
| # Python | |
| - PYTHONUNBUFFERED=1 | |
| - PYTHONIOENCODING=utf-8 | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:7860/health"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 20s | |
| networks: | |
| - picarones_net | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Service optionnel : Ollama (LLMs locaux) | |
| # Activer avec : docker compose --profile ollama up | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ollama: | |
| # Image paramΓ©trable pour la reproductibilitΓ© : poser | |
| # ``OLLAMA_IMAGE=ollama/ollama:<tag>`` dans .env pour Γ©pingler une | |
| # version (recommandΓ© en institutionnel β ``latest`` peut dΓ©river | |
| # entre deux pulls). DΓ©faut ``latest`` conservΓ© pour ne pas casser | |
| # le profil optionnel avec un tag codΓ© en dur non vΓ©rifiΓ©. | |
| image: ${OLLAMA_IMAGE:-ollama/ollama:latest} | |
| container_name: picarones_ollama | |
| restart: unless-stopped | |
| profiles: | |
| - ollama | |
| ports: | |
| - "${OLLAMA_PORT:-11434}:11434" | |
| volumes: | |
| - ollama_models:/root/.ollama | |
| environment: | |
| # Sprint S6.4 β restriction CORS Ollama. Avant : ``*`` permet | |
| # Γ n'importe quel site web visitΓ© par l'utilisateur d'appeler | |
| # l'API Ollama interne via son navigateur (CSRF cross-origin). | |
| # En mode dΓ©faut, on n'autorise que le service web Picarones | |
| # (rΓ©seau Docker interne) ; un opΓ©rateur peut surcharger via | |
| # ``OLLAMA_ORIGINS`` env var pour ajouter un origin de | |
| # dΓ©veloppement (ex : ``http://localhost:3000``). | |
| # NB : le service web s'appelle ``picarones`` (pas ``web``) β | |
| # l'origin rΓ©seau Docker interne doit donc Γͺtre picarones:7860. | |
| - OLLAMA_ORIGINS=${OLLAMA_ORIGINS:-http://picarones:7860,http://localhost:7860} | |
| deploy: | |
| resources: | |
| reservations: | |
| devices: | |
| - driver: nvidia | |
| count: all | |
| capabilities: [gpu] | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 5 | |
| start_period: 30s | |
| networks: | |
| - picarones_net | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Volumes persistants | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| volumes: | |
| picarones_history: | |
| driver: local | |
| ollama_models: | |
| driver: local | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # RΓ©seau interne | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| networks: | |
| picarones_net: | |
| driver: bridge | |