メインコンテンツまでスキップ

Docker によるデプロイ

Sinaptic® DROID+ を Docker を使用して本番環境で実行します。公式イメージは非常に軽量(15MB 未満)で、非 root ユーザーで実行され、組み込みのヘルスチェック(healthcheck)が含まれています。

イメージ情報

レジストリイメージ名プル(Pull)コマンド
Docker Hub (メイン)sinapticai/droiddocker pull sinapticai/droid:latest
GHCR (ミラー)ghcr.io/sinapticai/droiddocker pull ghcr.io/sinapticai/droid:latest

タグ: latest, 0.5.0, 0.5, 0 (セマンティックバージョニング)、および特定のバージョンを固定するための 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 ポート:OpenAI 互換 API
  • 8081 ポート:管理 API + エージェントビルダー(Agent Builder)UI
  • ローカルの設定およびエージェントファイルがコンテナにマウントされる
  • 環境変数経由で API キーを渡す

設定方法

コンテナは以下の 2 つのパスを想定しています:

パス用途デフォルト
/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" # OpenAI 互換 API
- "8081:8081" # 管理 API + ビルダー 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)

コンテナには、30 秒ごとに droid health を実行する組み込みのヘルスチェック機能が含まれています。手動でチェックすることも可能です:

# コンテナの外から確認
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 とビルダー UI は内部利用を目的としています。
  • 環境変数ではなく、Docker シークレット(secrets)や 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

その後、droid.yaml 内でサービス名を使用して Ollama を参照します:

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 が見つからない、または無効な形式であることです。

ヘルスチェックが失敗する: コンテナ内部から 8080 ポートにアクセス可能であること、および設定ファイルが有効な YAML であることを確認してください。

ローカルの LLM に接続できない: Ollama や LM Studio がホスト上で実行されている場合は、localhost の代わりに host.docker.internal を使用してください。

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

ボリュームへの権限拒否 (Permission denied): コンテナは非 root で実行されます。マウントされたディレクトリが UID 65534 (nobody) から読み取り可能であることを確認してください。