104 lines
2.9 KiB
YAML
104 lines
2.9 KiB
YAML
# Embedding (query + indicizzazione) su Ollama locale di pi1: il DS920 (J4125, senza AVX)
|
|
# impiega minuti per chunk. Sul DS920 restano Qdrant (base di conoscenza) e un Ollama di
|
|
# riserva per le sole query (OLLAMA_URL in .env). I valori qui sovrascrivono .env.
|
|
x-embedding-env: &embedding-env
|
|
OLLAMA_QUERY_URL: http://ollama:11434
|
|
OLLAMA_INDEX_URL: http://ollama:11434
|
|
OLLAMA_QUERY_NUM_THREAD: "2"
|
|
# Thermal gate sull'host locale (pi1), soglie da Pi5 (throttling a 80-85°C)
|
|
THERMAL_SOURCE: local
|
|
THERMAL_TEMP_SOFT_C: "70"
|
|
THERMAL_TEMP_HARD_C: "78"
|
|
THERMAL_CPU_TARGET_PCT: "75"
|
|
THERMAL_POLL_S: "15"
|
|
OLLAMA_EMBED_DELAY_S: "0.5"
|
|
OLLAMA_EMBED_COOL_DELAY_S: "0"
|
|
|
|
services:
|
|
loogle-mcp:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: loogle-mcp:latest
|
|
container_name: loogle-mcp
|
|
restart: always
|
|
ports:
|
|
- "8700:8700"
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
<<: *embedding-env
|
|
TZ: Europe/Rome
|
|
MCP_DB: /data/loogle_mcp.db
|
|
MCP_CONTEXT_ROOT: /data/context
|
|
MCP_AUDIT_LOG: /data/audit.log
|
|
MCP_VECTOR_FALLBACK: /data/vector_fallback.db
|
|
volumes:
|
|
- ./data:/data
|
|
- /mnt/ha-apps/mcp/context:/data/context
|
|
depends_on:
|
|
- ollama
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:8700/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
loogle-mcp-indexer:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: loogle-mcp:latest
|
|
container_name: loogle-mcp-indexer
|
|
restart: always
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
<<: *embedding-env
|
|
TZ: Europe/Rome
|
|
MCP_DB: /data/loogle_mcp.db
|
|
MCP_CONTEXT_ROOT: /data/context
|
|
MCP_VECTOR_FALLBACK: /data/vector_fallback.db
|
|
command: ["python", "-m", "worker.indexer_main"]
|
|
volumes:
|
|
- ./data:/data
|
|
- /mnt/ha-apps/mcp/context:/data/context
|
|
depends_on:
|
|
- loogle-mcp
|
|
- ollama
|
|
|
|
# Ollama per gli embedding (stesso modello del DS920 → stesso spazio vettoriale).
|
|
# Nessuna porta pubblicata: raggiungibile solo dai servizi MCP sulla rete compose.
|
|
ollama:
|
|
image: ollama/ollama:0.32.15
|
|
container_name: loogle-mcp-ollama
|
|
restart: always
|
|
environment:
|
|
- OLLAMA_KEEP_ALIVE=-1
|
|
- OLLAMA_NUM_PARALLEL=2
|
|
- OLLAMA_MAX_LOADED_MODELS=1
|
|
volumes:
|
|
# Volume Docker (non bind nella cartella progetto: il sorgente viene copiato su Gitea)
|
|
- ollama-models:/root/.ollama
|
|
cpus: 2
|
|
mem_limit: 1g
|
|
healthcheck:
|
|
test: ["CMD", "ollama", "list"]
|
|
interval: 60s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
# Qdrant locale: solo su x86/DS920 — su Pi5 ARM 16K page size non supportato
|
|
qdrant-local:
|
|
profiles: ["qdrant-local"]
|
|
image: qdrant/qdrant:v1.13.2
|
|
container_name: loogle_mcp_qdrant
|
|
restart: always
|
|
ports:
|
|
- "6333:6333"
|
|
volumes:
|
|
- /mnt/ha-apps/mcp/qdrant:/qdrant/storage
|
|
|
|
volumes:
|
|
ollama-models:
|