name: mistral-local services: local-ai: build: context: . dockerfile: Dockerfile image: local-ai container_name: local-ai networks: - mistral-net ports: - "127.0.0.1:8080:8080" # Limites de ressources deploy: resources: limits: memory: 12g cpus: "8" # Sécurité read_only: true security_opt: - no-new-privileges:true tmpfs: - /tmp:size=256m devices: - /dev/dri:/dev/dri group_add: - video environment: - GGML_VK_VISIBLE_DEVICES=0 volumes: - ./ai-models/mistral-7b-instruct.gguf:/home/llama/models/mistral-7b-instruct.gguf:ro - ./workspace:/home/llama/workspace # Health check — vérifie que le serveur répond # healthcheck: # test: ["CMD-SHELL", "curl -sf http://localhost:8080/health || exit 1"] # interval: 30s # timeout: 10s # retries: 3 # start_period: 60s # laisser le temps au modèle de charger networks: mistral-net: name: mistral-net driver: bridge internal: false # pas de passerelle vers Internet driver_opts: com.docker.network.bridge.name: br-mistral