142 lines
4.7 KiB
YAML
142 lines
4.7 KiB
YAML
# Integrated example for sibling project folders:
|
|
# ./glpi-ai-agent
|
|
# ./glpi-ai-knowledgebase
|
|
# ./glpi-neural-brain
|
|
# Run from glpi-neural-brain:
|
|
# docker compose -f deployment/docker-compose.full.yml up -d --build
|
|
services:
|
|
agent-data-init:
|
|
build:
|
|
context: ${AGENT_PROJECT_PATH:-../../glpi-ai-agent}
|
|
target: data-init
|
|
restart: "no"
|
|
user: "0:0"
|
|
volumes:
|
|
- agent-data:/app/data
|
|
security_opt: [no-new-privileges:true]
|
|
cap_drop: [ALL]
|
|
cap_add: [CHOWN, FOWNER]
|
|
|
|
agent:
|
|
build: ${AGENT_PROJECT_PATH:-../../glpi-ai-agent}
|
|
restart: unless-stopped
|
|
env_file: ${AGENT_ENV_FILE:-../../glpi-ai-agent/.env}
|
|
environment:
|
|
DATA_DIR: /app/data
|
|
KNOWLEDGE_DIR: /app/knowledge
|
|
OLLAMA_URL: http://ollama:11434
|
|
BRAIN_ACTIVITY_URL: http://brain:8090/api/events
|
|
BRAIN_ACTIVITY_API_KEY: ${BRAIN_API_KEY:-}
|
|
ports:
|
|
- "127.0.0.1:${AGENT_PORT:-8080}:8080"
|
|
volumes:
|
|
- agent-data:/app/data
|
|
- ${KNOWLEDGE_HOST_PATH:-../../glpi-ai-agent/knowledge}:/app/knowledge:ro
|
|
depends_on:
|
|
agent-data-init:
|
|
condition: service_completed_successfully
|
|
ollama:
|
|
condition: service_started
|
|
security_opt: [no-new-privileges:true]
|
|
cap_drop: [ALL]
|
|
read_only: true
|
|
tmpfs: [/tmp:size=64m,mode=1777]
|
|
|
|
kb-editor:
|
|
build: ${KB_PROJECT_PATH:-../../glpi-ai-knowledgebase}
|
|
image: kb-helpdesk:neural-stack
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${KB_EDITOR_PORT:-8081}:8080"
|
|
environment:
|
|
APP_MODE: editor
|
|
APP_TITLE: KB Administration
|
|
APP_SUBTITLE: Wissen und AI-THINK prüfen
|
|
DATA_DIR: /data/knowledge
|
|
BACKUP_DIR: /data/backups
|
|
STAGING_DIR: /data/staging
|
|
LISTEN_ADDR: :8080
|
|
BASIC_AUTH_USER: ${EDITOR_AUTH_USER:-}
|
|
BASIC_AUTH_PASSWORD: ${EDITOR_AUTH_PASSWORD:-}
|
|
BRAIN_ACTIVITY_URL: http://brain:8090/api/events
|
|
BRAIN_ACTIVITY_API_KEY: ${BRAIN_API_KEY:-}
|
|
volumes:
|
|
- ${KNOWLEDGE_HOST_PATH:-../../glpi-ai-agent/knowledge}:/data/knowledge:rw
|
|
- ${KB_BACKUP_HOST_PATH:-../../glpi-ai-knowledgebase/backups}:/data/backups:rw
|
|
- ${KB_STAGING_HOST_PATH:-../../glpi-ai-knowledgebase/staging}:/data/staging:rw
|
|
read_only: true
|
|
tmpfs: [/tmp:size=32m]
|
|
security_opt: [no-new-privileges:true]
|
|
cap_drop: [ALL]
|
|
|
|
kb-search:
|
|
image: kb-helpdesk:neural-stack
|
|
depends_on: [kb-editor]
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${KB_SEARCH_PORT:-8082}:8080"
|
|
environment:
|
|
APP_MODE: google
|
|
APP_TITLE: IT Helpdesk Wissen
|
|
APP_SUBTITLE: Interne Lösungsdatenbank
|
|
AUTO_RELOAD_INTERVAL: 60s
|
|
DATA_DIR: /data/knowledge
|
|
# Deliberately isolated: production search never sees Brain AI-THINK drafts.
|
|
STAGING_DIR: /tmp/empty-staging
|
|
LISTEN_ADDR: :8080
|
|
OLLAMA_BASE_URL: http://ollama:11434
|
|
AI_FALLBACK_ENABLED: ${AI_FALLBACK_ENABLED:-false}
|
|
OLLAMA_MODEL: ${OLLAMA_CHAT_MODEL:-qwen3:8b}
|
|
BRAIN_ACTIVITY_URL: http://brain:8090/api/events
|
|
BRAIN_ACTIVITY_API_KEY: ${BRAIN_API_KEY:-}
|
|
volumes:
|
|
- ${KNOWLEDGE_HOST_PATH:-../../glpi-ai-agent/knowledge}:/data/knowledge:ro
|
|
read_only: true
|
|
tmpfs: [/tmp:size=32m]
|
|
security_opt: [no-new-privileges:true]
|
|
cap_drop: [ALL]
|
|
|
|
brain:
|
|
build:
|
|
context: ..
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${BRAIN_PORT:-8090}:8090"
|
|
environment:
|
|
BRAIN_LISTEN_ADDR: :8090
|
|
BRAIN_DATA_DIR: /app/data
|
|
BRAIN_KNOWLEDGE_DIRS: /sources/knowledge
|
|
BRAIN_STAGING_DIRS: /sources/staging
|
|
BRAIN_AGENT_RUNS_FILES: /sources/agent-data/runs.jsonl
|
|
BRAIN_API_KEY: ${BRAIN_API_KEY:-}
|
|
OLLAMA_URL: http://ollama:11434
|
|
OLLAMA_CHAT_MODEL: ${OLLAMA_CHAT_MODEL:-qwen3:8b}
|
|
OLLAMA_EMBEDDING_MODEL: ${OLLAMA_EMBEDDING_MODEL:-embeddinggemma}
|
|
BRAIN_AUTO_ENRICH: ${BRAIN_AUTO_ENRICH:-true}
|
|
BRAIN_SCAN_INTERVAL: ${BRAIN_SCAN_INTERVAL:-20s}
|
|
BRAIN_ENRICH_INTERVAL: ${BRAIN_ENRICH_INTERVAL:-90s}
|
|
BRAIN_ENRICH_BATCH_SIZE: ${BRAIN_ENRICH_BATCH_SIZE:-3}
|
|
BRAIN_ENRICH_STEP_DELAY: ${BRAIN_ENRICH_STEP_DELAY:-3s}
|
|
BRAIN_ENRICH_ANCHORS: ${BRAIN_ENRICH_ANCHORS:-48}
|
|
BRAIN_RESEARCH_ENABLED: ${BRAIN_RESEARCH_ENABLED:-false}
|
|
SEARXNG_URL: ${SEARXNG_URL:-}
|
|
volumes:
|
|
- brain-data:/app/data
|
|
- ${KNOWLEDGE_HOST_PATH:-../../glpi-ai-agent/knowledge}:/sources/knowledge:ro
|
|
- ${KB_STAGING_HOST_PATH:-../../glpi-ai-knowledgebase/staging}:/sources/staging:rw
|
|
- agent-data:/sources/agent-data:ro
|
|
depends_on:
|
|
ollama:
|
|
condition: service_started
|
|
|
|
ollama:
|
|
image: ollama/ollama:latest
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ollama-data:/root/.ollama
|
|
|
|
volumes:
|
|
agent-data:
|
|
brain-data:
|
|
ollama-data:
|