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
| Register | Image | Pull-commando |
|---|---|---|
| Docker Hub (primair) | sinapticai/droid | docker pull sinapticai/droid:latest |
| GHCR (spiegel) | ghcr.io/sinapticai/droid | docker 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:
| Pad | Doel | Standaard |
|---|---|---|
/etc/droid/droid.yaml | Runtime-configuratie | Vereist (koppel uw eigen bestand) |
/var/lib/droid | Gegevensmap (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).