init
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
# Gemeinsamer Stack
|
||||
|
||||
`docker-compose.full.yml` ist auf deine beiden gelieferten Projekte zugeschnitten. Standardmäßig erwartet die Datei drei Geschwisterordner. Pfade und Ports lassen sich über Umgebungsvariablen überschreiben.
|
||||
|
||||
Vor dem Start:
|
||||
|
||||
1. beide optionalen Telemetrie-Patches anwenden, falls echte Suchanfragen live erscheinen sollen;
|
||||
2. Agent-`.env` mit GLPI-Zugangsdaten bereitstellen;
|
||||
3. Knowledge-, Staging- und Backup-Pfade prüfen;
|
||||
4. Stack starten und Modelle laden.
|
||||
|
||||
```bash
|
||||
docker compose -f deployment/docker-compose.full.yml up -d --build ollama
|
||||
docker compose -f deployment/docker-compose.full.yml exec ollama ollama pull qwen3:8b
|
||||
docker compose -f deployment/docker-compose.full.yml exec ollama ollama pull embeddinggemma
|
||||
docker compose -f deployment/docker-compose.full.yml up -d --build
|
||||
```
|
||||
|
||||
Ports: Agent `8080`, Editor `8081`, Suche `8082`, Brain `8090`.
|
||||
|
||||
|
||||
## Staging-Isolation
|
||||
|
||||
Der Editor und das Brain teilen sich das echte Knowledgebase-Staging. `kb-search` erhält absichtlich nur ein leeres, flüchtiges Verzeichnis unter `/tmp/empty-staging`; der Agent mountet das Staging überhaupt nicht. AI-THINK-Drafts sind dadurch im Brain und im Prüf-Editor sichtbar, aber weder für Agent-Antworten noch für die produktive Knowledgebase-Suche verfügbar. Erst die bestehende Promotion im Editor kopiert einen freigegebenen Entwurf in die produktive Knowledge-Basis.
|
||||
@@ -0,0 +1,138 @@
|
||||
# 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_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:
|
||||
Reference in New Issue
Block a user