50 lines
1.2 KiB
YAML
50 lines
1.2 KiB
YAML
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 |