Розгортання через Docker
Запускайте Sinaptic® DROID+ у продакшні за допомогою Docker. Офіційний образ є мінімальним (<15 МБ), запускається не від імені root і має вбудовану перевірку працездатності (healthcheck).
Образи
| Реєстр | Образ | Команда завантаження |
|---|---|---|
| Docker Hub (основний) | sinapticai/droid | docker pull sinapticai/droid:latest |
| GHCR (дзеркало) | ghcr.io/sinapticai/droid | docker pull ghcr.io/sinapticai/droid:latest |
Теги: latest, 0.5.0, 0.5, 0 (semver), а також sha-<commit> для фіксації конкретної версії.
Швидкий старт
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
Це запустить Sinaptic® DROID+ з такими параметрами:
- Порт 8080: API, сумісне з OpenAI
- Порт 8081: API керування + інтерфейс Agent Builder
- Ваша локальна конфігурація та файли агентів підмонтовані в контейнер
- Ключ API передається через змінну середовища
Конфігурація
Контейнер очікує два шляхи:
| Шлях | Призначення | Тип |
|---|---|---|
/etc/droid/droid.yaml | Конфігурація середовища | Обов'язково (підмонтуйте свій файл) |
/var/lib/droid | Каталог даних (RAG, логи, аудит) | Створюється автоматично |
Шлях до конфігурації можна змінити за допомогою змінної DROID_CONFIG, а каталог даних — через DROID_DATA_DIR.
Змінні середовища
Передавайте ключі API та перевизначення налаштувань через змінні середовища. Файл конфігурації підтримує синтаксис ${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
Для використання в продакшні рекомендується Docker Compose:
# docker-compose.yml
version: "3.8"
services:
droid:
image: sinapticai/droid:latest
ports:
- "8080:8080" # API, сумісне з OpenAI
- "8081:8081" # 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:
Запуск:
docker compose up -d
Перевірки працездатності (Health Checks)
Контейнер має вбудовану перевірку, яка запускає droid health кожні 30 секунд. Ви також можете перевірити стан вручну:
# Зовні контейнера
curl http://localhost:8081/health
# Через Docker inspect
docker inspect --format='{{.State.Health.Status}}' droid
Рекомендації для продакшну
Томи (Volumes)
Підмонтуйте конфігурацію в режимі "тільки для читання" (:ro) і використовуйте іменований том для даних:
-v ./droid.yaml:/etc/droid/droid.yaml:ro
-v ./configs/agents:/etc/droid/agents:ro
-v droid-data:/var/lib/droid
Безпека
За замовчуванням контейнер запускається не від імені root (образ distroless). Для додаткової безпеки:
- Не відкривайте порт 8081 для публічного доступу — API керування та інтерфейс Builder призначені для внутрішнього використання.
- Використовуйте секрети Docker або сховище (vault) для ключів API замість змінних середовища.
- Увімкніть SinapticAI у режимі блокування для всіх агентів у продакшні.
# Відкривайте лише порт API для зовнішнього доступу
ports:
- "8080:8080"
# Порт 8081 залиште лише у внутрішній мережі
Ліміти ресурсів
Sinaptic® DROID+ сам по собі дуже легкий, але відповіді LLM можуть споживати пам'ять під час стрімінгу. Рекомендовані мінімуми:
deploy:
resources:
limits:
memory: 512M
cpus: "1.0"
reservations:
memory: 128M
cpus: "0.25"
Логування
За замовчуванням Sinaptic® DROID+ виводить структуровані JSON-логи в stdout. Ви можете збирати їх за допомогою вашого агрегатора логів:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
Мережа
Якщо ви запускаєте кілька екземплярів Sinaptic® DROID+ або підключаєтеся до локальних LLM (Ollama, LM Studio):
services:
droid:
# ... налаштування droid ...
networks:
- droid-net
ollama:
image: ollama/ollama:latest
networks:
- droid-net
networks:
droid-net:
driver: bridge
Після цього звертайтеся до Ollama за назвою сервісу в droid.yaml:
ollama:
base_url: "http://ollama:11434/v1"
Оновлення
docker pull sinapticai/droid:latest
docker compose up -d
Контейнер не зберігає внутрішній стан — уся конфігурація міститься в підмонтованих файлах, а всі дані — у томі. Ви можете безпечно замінити контейнер у будь-який час.
Збірка з вихідного коду
Якщо ви хочете зібрати образ Docker самостійно:
git clone https://github.com/SinapticAI/droid-community.git
cd droid-community
docker build -t droid:local .
Вирішення проблем
Контейнер миттєво завершує роботу:
Перевірте логи командою docker logs droid. Найпоширеніша причина: відсутній або неправильний файл droid.yaml.
Перевірка працездатності (healthcheck) не проходить: Переконайтеся, що порт 8080 доступний усередині контейнера, а файл конфігурації є валідним YAML.
Неможливо підключитися до локальної LLM:
Якщо Ollama або LM Studio працюють на хост-машині, використовуйте host.docker.internal замість localhost:
ollama:
base_url: "http://host.docker.internal:11434/v1"
Доступ до томів заборонено (Permission denied): Контейнер запускається не від імені root. Переконайтеся, що підмонтовані каталоги доступні для читання користувачу з UID 65534 (nobody).