Docker-Container-Leitfaden

Andere Sprachen


Symbi stellt einen einheitlichen Docker-Container mit allen Funktionen bereit, verfuegbar ueber die GitHub Container Registry.

Verfuegbares Image

Einheitlicher Symbi-Container

  • Image: ghcr.io/thirdkeyai/symbi:latest
  • Zweck: All-in-One-Container mit DSL-Parsing, Agenten-Laufzeit und MCP-Server
  • Groesse: ~80MB (inkl. Vektordatenbank und HTTP-API-Unterstuetzung)
  • CLI: Einheitlicher symbi-Befehl mit Unterbefehlen fuer verschiedene Operationen

Schnellstart

Vorgefertigtes Image verwenden

# Neuestes Image herunterladen
docker pull ghcr.io/thirdkeyai/symbi:latest

# Eine DSL-Datei parsen
docker run --rm -v $(pwd):/workspace \
  ghcr.io/thirdkeyai/symbi:latest \
  dsl --file /workspace/agent.dsl

# MCP-Server starten (stdio-basiert, kein Port erforderlich)
docker run --rm -i \
  ghcr.io/thirdkeyai/symbi:latest \
  mcp

# Mit HTTP-API starten
docker run --rm -p 8080:8080 \
  ghcr.io/thirdkeyai/symbi:latest \
  up --http-bind 0.0.0.0:8080

Entwicklungs-Workflow

# Interaktive Entwicklung
docker run --rm -it -v $(pwd):/workspace \
  ghcr.io/thirdkeyai/symbi:latest bash

# Entwicklung mit Volume-Mounts und Ports
docker run --rm -it \
  -v $(pwd):/workspace \
  -p 8080:8080 \
  -p 3000:3000 \
  ghcr.io/thirdkeyai/symbi:latest bash

Verfuegbare Tags

  • latest - Neuestes stabiles Release
  • main - Neuester Entwicklungs-Build
  • v1.0.0 - Spezifische Versionsreleases
  • sha-<commit> - Spezifische Commit-Builds

Lokal bauen

Einheitlicher Symbi-Container

# Vom Projektstammverzeichnis
docker build -t symbi:latest .

# Build testen
docker run --rm symbi:latest --version

# DSL-Parsing testen
docker run --rm -v $(pwd):/workspace symbi:latest dsl --help

# MCP-Server testen
docker run --rm symbi:latest mcp

Multi-Architektur-Unterstuetzung

Images werden gebaut fuer:

  • linux/amd64 (x86_64)
  • linux/arm64 (ARM64/Apple Silicon)

Docker laedt automatisch die korrekte Architektur fuer Ihre Plattform herunter.

Sicherheitsfunktionen

Ausfuehrung als Nicht-Root

  • Container laufen als Nicht-Root-Benutzer symbi (UID 1000)
  • Minimale Angriffsflaeche mit sicherheitsgehaerteten Basis-Images

Schwachstellenscanning

  • Alle Images werden automatisch mit Trivy gescannt
  • Sicherheitshinweise werden im GitHub-Security-Tab veroeffentlicht
  • SARIF-Berichte fuer detaillierte Schwachstellenanalyse

Konfiguration

Umgebungsvariablen

Symbi-Container:

  • RUST_LOG - Logging-Level festlegen (debug, info, warn, error)
  • SYMBIONT_VECTOR_BACKEND - Vektor-Backend: lancedb (Standard) oder qdrant
  • QDRANT_URL - Qdrant-Vektordatenbank-URL (nur bei Verwendung des optionalen Qdrant-Backends)

Volume-Mounts

# Agentendefinitionen mounten
-v $(pwd)/agents:/var/lib/symbi/agents

# Konfiguration mounten
-v $(pwd)/config:/etc/symbi

# Datenverzeichnis mounten
-v symbi-data:/var/lib/symbi/data

Docker Compose Beispiel

Standardmaessig verwendet Symbiont LanceDB als eingebettete Vektordatenbank – keine externen Dienste erforderlich. Wenn Sie ein verteiltes Vektor-Backend fuer skalierte Deployments benoetigen, koennen Sie optional Qdrant hinzufuegen.

Minimal (LanceDB-Standard – kein Qdrant erforderlich)

version: '3.8'

services:
  symbi:
    image: ghcr.io/thirdkeyai/symbi:latest
    ports:
      - "8080:8080"
      - "3000:3000"
    volumes:
      - ./agents:/var/lib/symbi/agents
      - ./config:/etc/symbi
      - symbi-data:/var/lib/symbi/data
    environment:
      - RUST_LOG=info
    command: ["up", "--http-bind", "0.0.0.0:8080"]

volumes:
  symbi-data:

Mit optionalem Qdrant-Backend

version: '3.8'

services:
  symbi:
    image: ghcr.io/thirdkeyai/symbi:latest
    ports:
      - "8080:8080"
      - "3000:3000"
    volumes:
      - ./agents:/var/lib/symbi/agents
      - ./config:/etc/symbi
      - symbi-data:/var/lib/symbi/data
    environment:
      - RUST_LOG=info
      - SYMBIONT_VECTOR_BACKEND=qdrant
      - QDRANT_URL=http://qdrant:6334
    depends_on:
      - qdrant
    command: ["up", "--http-bind", "0.0.0.0:8080"]

  qdrant:
    image: qdrant/qdrant:latest
    ports:
      - "6333:6333"
      - "6334:6334"
    volumes:
      - qdrant-data:/qdrant/storage

volumes:
  symbi-data:
  qdrant-data:

Fehlerbehebung

Haeufige Probleme

Zugriff verweigert:

# Korrektes Eigentum sicherstellen
sudo chown -R 1000:1000 ./data

# Oder anderen Benutzer verwenden
docker run --user $(id -u):$(id -g) ...

Port-Konflikte:

# Andere Ports verwenden
docker run -p 8081:8080 ghcr.io/thirdkeyai/symbi:latest

Build-Fehler:

# Docker-Cache leeren
docker builder prune -a

# Ohne Cache neu bauen
docker build --no-cache -f runtime/Dockerfile .

Gesundheitspruefungen

# Container-Gesundheit pruefen
docker run --name symbi-test -d ghcr.io/thirdkeyai/symbi:latest up --http-bind 0.0.0.0:8080
docker exec symbi-test /usr/local/bin/symbi --version
docker rm -f symbi-test

Performance-Optimierung

Ressourcenlimits

# Speicher- und CPU-Limits setzen
docker run --memory=512m --cpus=1.0 \
  ghcr.io/thirdkeyai/symbi:latest mcp

Build-Optimierung

# BuildKit fuer schnellere Builds verwenden
DOCKER_BUILDKIT=1 docker build .

# Multi-Stage-Caching
docker build --target builder -t symbi-builder .
docker build --cache-from symbi-builder .

CI/CD-Integration

GitHub Actions baut und veroeffentlicht Container automatisch bei:

  • Push auf den main-Branch
  • Neue Versions-Tags (v*)
  • Pull Requests (nur Build)

Images enthalten Metadaten:

  • Git-Commit-SHA
  • Build-Zeitstempel
  • Schwachstellen-Scan-Ergebnisse
  • SBOM (Software Bill of Materials)