Ga naar hoofdinhoud

Docker-implementatie

Voer Sinaptic® DROID+ uit in productie met Docker. Het officiële image is minimaal (<15 MB), wordt uitgevoerd als niet-root gebruiker en bevat een ingebouwde statuscontrole (healthcheck).

Images

RegisterImagePull-commando
Docker Hub (primair)sinapticai/droiddocker pull sinapticai/droid:latest
GHCR (spiegel)ghcr.io/sinapticai/droiddocker pull ghcr.io/sinapticai/droid:latest

Tags: latest, 0.5.0, 0.5, 0 (semver), plus sha-<commit> voor het vastzetten van een specifieke versie.

Snelstart

docker run -d \
--name droid \
-p 8080:8080 \
-p 8081:8081 \
-v ./droid.yaml:/etc/droid/droid.yaml \
-v ./configs/agents:/etc/droid/agents \
-e OPENAI_API_KEY=$OPENAI_API_KEY \
sinapticai/droid

Dit start Sinaptic® DROID+ met:

  • Poort 8080: OpenAI-compatibele API
  • Poort 8081: Beheer-API + Agent Builder UI
  • Uw lokale configuratie en agentbestanden gekoppeld aan de container
  • API-sleutel doorgegeven via een omgevingsvariabele

Configuratie

De container verwacht twee paden:

PadDoelStandaard
/etc/droid/droid.yamlRuntime-configuratieVereist (koppel uw eigen bestand)
/var/lib/droidGegevensmap (RAG, logs, audit)Wordt automatisch aangemaakt

Overschrijf het configuratiepad met DROID_CONFIG en de gegevensmap met de omgevingsvariabelen DROID_DATA_DIR.

Omgevingsvariabelen

Geef API-sleutels en overschrijvingen door via omgevingsvariabelen. Het configuratiebestand ondersteunt de ${VAR} syntaxis:

docker run -d \
-e OPENAI_API_KEY=sk-... \
-e ANTHROPIC_API_KEY=sk-ant-... \
-e GEMINI_API_KEY=AIza... \
-e GROK_API_KEY=xai-... \
sinapticai/droid

Docker Compose

Gebruik Docker Compose voor productie-implementaties:

# docker-compose.yml
version: "3.8"

services:
droid:
image: sinapticai/droid:latest
ports:
- "8080:8080" # OpenAI-compatibele API
- "8081:8081" # Beheer-API + Builder UI
volumes:
- ./droid.yaml:/etc/droid/droid.yaml:ro
- ./configs/agents:/etc/droid/agents:ro
- droid-data:/var/lib/droid
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
restart: unless-stopped
healthcheck:
test: ["/usr/local/bin/droid", "health", "--openai-port", "8080"]
interval: 30s
timeout: 3s
start_period: 5s
retries: 3

volumes:
droid-data:

Starten:

docker compose up -d

Statuscontroles (Health Checks)

De container bevat een ingebouwde statuscontrole die elke 30 seconden droid health uitvoert. U kunt de status ook handmatig controleren:

# Van buiten de container
curl http://localhost:8081/health

# Docker inspect
docker inspect --format='{{.State.Health.Status}}' droid

Aanbevelingen voor productie

Volumes

Koppel uw configuratie als alleen-lezen (:ro) en gebruik een benoemd volume voor gegevens:

-v ./droid.yaml:/etc/droid/droid.yaml:ro
-v ./configs/agents:/etc/droid/agents:ro
-v droid-data:/var/lib/droid

Beveiliging

De container wordt standaard uitgevoerd als niet-root gebruiker (distroless image). Voor extra beveiliging:

  • Stel poort 8081 niet publiekelijk bloot — de beheer-API en Builder UI zijn voor intern gebruik.
  • Gebruik Docker secrets of een kluis (vault) voor API-sleutels in plaats van omgevingsvariabelen.
  • Schakel SinapticAI in blokmodus in voor alle productie-agents.
# Stel alleen de API-poort extern bloot
ports:
- "8080:8080"
# Houd 8081 alleen op het interne netwerk

Resource-limieten

Sinaptic® DROID+ zelf is lichtgewicht, maar LLM-antwoorden kunnen geheugen verbruiken tijdens het streamen. Aanbevolen minima:

deploy:
resources:
limits:
memory: 512M
cpus: "1.0"
reservations:
memory: 128M
cpus: "0.25"

Loggen (Logging)

Sinaptic® DROID+ voert standaard gestructureerde JSON-logs uit naar stdout. Leg deze vast met uw favoriete log-aggregator:

logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"

Netwerken

Als u meerdere Sinaptic® DROID+-instanties uitvoert of verbinding maakt met lokale LLM's (Ollama, LM Studio):

services:
droid:
# ... droid configuratie ...
networks:
- droid-net

ollama:
image: ollama/ollama:latest
networks:
- droid-net

networks:
droid-net:
driver: bridge

Verwijs vervolgens naar Ollama via de servicenaam in droid.yaml:

ollama:
base_url: "http://ollama:11434/v1"

Bijwerken

docker pull sinapticai/droid:latest
docker compose up -d

De container is staatloos (stateless) — alle configuratie bevindt zich in gekoppelde bestanden en alle gegevens bevinden zich in het volume. U kunt de container op elk gewenst moment veilig vervangen.

Bouwen vanaf broncode

Als u liever zelf het Docker-image bouwt:

git clone https://github.com/SinapticAI/droid-community.git
cd droid-community
docker build -t droid:local .

Problemen oplossen

Container stopt onmiddellijk: Controleer de logs met docker logs droid. Meest voorkomende oorzaak: ontbrekend of ongeldig droid.yaml bestand.

Statuscontrole mislukt: Zorg ervoor dat poort 8080 toegankelijk is binnen de container en dat het configuratiebestand een geldig YAML-bestand is.

Kan geen verbinding maken met lokale LLM: Als Ollama of LM Studio op de host draait, gebruik dan host.docker.internal in plaats van localhost:

ollama:
base_url: "http://host.docker.internal:11434/v1"

Toegang geweigerd op volumes (Permission denied): De container wordt uitgevoerd als niet-root. Zorg ervoor dat gekoppelde mappen leesbaar zijn voor UID 65534 (nobody).