Przejdź do głównej zawartości

Wdrożenie przez Docker

Uruchamiaj Sinaptic® DROID+ w środowisku produkcyjnym za pomocą Docker. Oficjalny obraz jest minimalny (<15MB), działa bez uprawnień roota i zawiera wbudowaną kontrolę stanu (healthcheck).

Obrazy

RejestrObrazPolecenie pobierania
Docker Hub (główny)sinapticai/droiddocker pull sinapticai/droid:latest
GHCR (mirror)ghcr.io/sinapticai/droiddocker pull ghcr.io/sinapticai/droid:latest

Tagi: latest, 0.5.0, 0.5, 0 (semver) oraz sha-<commit> dla precyzyjnego określenia wersji.

Szybki start

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

To polecenie uruchamia Sinaptic® DROID+ z:

  • Portem 8080: API kompatybilne z OpenAI
  • Portem 8081: API zarządzania + interfejs Agent Builder
  • Lokalną konfiguracją i plikami agentów zamontowanymi w kontenerze
  • Kluczem API przekazanym przez zmienną środowiskową

Konfiguracja

Kontener oczekuje dwóch ścieżek:

ŚcieżkaPrzeznaczenieDomyślnie
/etc/droid/droid.yamlKonfiguracja środowiskaWymagane (zamontuj własną)
/var/lib/droidKatalog danych (RAG, logi, audyt)Tworzony automatycznie

Możesz nadpisać ścieżkę konfiguracji za pomocą zmiennej DROID_CONFIG oraz katalog danych za pomocą DROID_DATA_DIR.

Zmienne środowiskowe

Przekazuj klucze API i nadpisuj ustawienia za pomocą zmiennych środowiskowych. Plik konfiguracyjny wspiera składnię ${VAR}:

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

W przypadku wdrożeń produkcyjnych zaleca się użycie Docker Compose:

# docker-compose.yml
version: "3.8"

services:
droid:
image: sinapticai/droid:latest
ports:
- "8080:8080" # API kompatybilne z OpenAI
- "8081:8081" # API zarządzania + 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:

Uruchomienie:

docker compose up -d

Kontrole stanu (Health Checks)

Kontener zawiera wbudowaną kontrolę stanu, która uruchamia polecenie droid health co 30 sekund. Możesz również sprawdzić stan ręcznie:

# Z zewnątrz kontenera
curl http://localhost:8081/health

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

Zalecenia produkcyjne

Wolumeny (Volumes)

Zamontuj konfigurację w trybie tylko do odczytu (:ro) i używaj nazwanego wolumenu dla danych:

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

Bezpieczeństwo

Kontener domyślnie działa bez uprawnień roota (obraz typu distroless). Dla dodatkowego bezpieczeństwa:

  • Nie udostępniaj portu 8081 publicznie — API zarządzania i interfejs Builder UI służą do użytku wewnętrznego.
  • Używaj sekretów Docker lub skarbca (vault) dla kluczy API zamiast zmiennych środowiskowych.
  • Włącz SinapticAI w trybie blokowania (block mode) dla wszystkich agentów produkcyjnych.
# Udostępnij na zewnątrz tylko port API
ports:
- "8080:8080"
# Port 8081 pozostaw tylko w sieci wewnętrznej

Limity zasobów

Sam Sinaptic® DROID+ jest lekki, ale odpowiedzi LLM mogą zużywać pamięć podczas przesyłania strumieniowego. Zalecane minima:

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

Logowanie

Sinaptic® DROID+ domyślnie generuje ustrukturyzowane logi JSON do stdout. Przechwytuj je za pomocą preferowanego agregatora logów:

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

Sieć

Jeśli uruchamiasz wiele instancji Sinaptic® DROID+ lub łączysz się z lokalnymi modelami LLM (Ollama, LM Studio):

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

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

networks:
droid-net:
driver: bridge

Następnie odwołuj się do Ollama poprzez nazwę usługi w pliku droid.yaml:

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

Aktualizacja

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

Kontener jest bezstanowy — cała konfiguracja znajduje się w zamontowanych plikach, a wszystkie dane w wolumenie. Możesz bezpiecznie wymienić kontener w dowolnym momencie.

Budowanie ze źródeł

Jeśli wolisz samodzielnie zbudować obraz Docker:

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

Rozwiązywanie problemów

Kontener natychmiast kończy pracę: Sprawdź logi za pomocą docker logs droid. Najczęstsza przyczyna: brakujący lub nieprawidłowy plik droid.yaml.

Kontrola stanu (healthcheck) nie przechodzi: Upewnij się, że port 8080 jest dostępny wewnątrz kontenera, a plik konfiguracyjny jest poprawnym plikiem YAML.

Nie można połączyć się z lokalnym modelem LLM: Jeśli Ollama lub LM Studio działają na hoście, użyj host.docker.internal zamiast localhost:

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

Brak uprawnień do wolumenów (Permission denied): Kontener działa bez uprawnień roota. Upewnij się, że zamontowane katalogi są czytelne dla użytkownika o UID 65534 (nobody).