このページは機械翻訳されています。間違いを見つけましたか?改善にご協力ください。
Skip to content

Docker イメージ

SnapOtter は単一の Docker イメージとして提供されます。単独で実行すると、ループバックインターフェイス上で組み込みの PostgreSQL 17 と Redis を起動します(組み込みモード)。本番環境では、Compose を使って別々の PostgreSQL 17 と Redis 8 のコンテナと並行して実行してください。アプリケーションイメージはすべてのプラットフォームで動作します。

クイックスタート

bash
docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data snapotter/snapotter:latest

DATABASE_URL を設定していない場合、これは組み込みモードで実行されます。PostgreSQL と Redis がコンテナ内のループバック上で起動し、すべてのデータは SnapOtter-data ボリューム配下に保存されます。外部サービスを使う場合は、(Compose スタックが行っているように)DATABASE_URLREDIS_URL を設定してください。設定 を参照してください。

NVIDIA CUDA アクセラレーション

イメージには amd64 上での NVIDIA CUDA サポートが含まれています。NVIDIA Container Toolkit をインストールした NVIDIA GPU を使用している場合は、--gpus all を追加してください:

bash
docker run -d --name SnapOtter --gpus all -p 1349:1349 -v SnapOtter-data:/data snapotter/snapotter:latest

イメージは実行時に CUDA を自動検出します。--gpus all を指定しない場合、または CUDA が利用できない場合、AI ツールは CPU 上で実行されます。どちらの場合も同じイメージです。

VA-API、Quick Sync、または OpenCL を通じた Intel/AMD の iGPU アクセラレーションは、現時点では SnapOtter の AI 推論には対応していません。/dev/dri をコンテナにマッピングすればレンダーデバイスを公開できますが、CUDA が利用可能でない限り、AI ランタイムは引き続き CPU を使用します。

ベンチマーク

572x1024 の JPEG ポートレートを使い、NVIDIA RTX 4070(12 GB VRAM)でテストしました。

ウォーム時の性能

ツールCPUGPU高速化
背景除去 (u2net)2,415ms879ms2.7x
背景除去 (isnet)2,457ms1,137ms2.2x
2x アップスケール350ms309ms1.1x
4x アップスケール910ms310ms2.9x
顔ぼかし139ms122ms1.1x

コールドスタート(コンテナ起動後の最初のリクエスト)

ツールCPUGPU高速化
背景除去22,286ms4,792ms4.7x
2x アップスケール3,957ms2,318ms1.7x

OCR は、CUDA の比較には含まれません。組み込みの Tesseract 層とオプションの RapidOCR/ONNX 層は両方とも、コンテナーに NVIDIA GPU アクセス権がある場合を含め、CPU を使用します。

CUDA ヘルスチェック

最初の AI リクエストの後、管理者向けヘルスエンドポイントが CUDA GPU のステータスを報告します:

GET /api/v1/admin/health
{"ai": {"gpu": true}}

Docker Compose

完全な Compose スタックには、アプリ、PostgreSQL 17、Redis 8 が含まれます。完全な docker-compose.yml については デプロイ を参照してください。最小限の例:

yaml
services:
  SnapOtter:
    image: snapotter/snapotter:latest
    ports:
      - "1349:1349"
    volumes:
      - SnapOtter-data:/data
      - SnapOtter-workspace:/tmp/workspace
    environment:
      - DATABASE_URL=postgres://snapotter:snapotter@postgres:5432/snapotter
      - REDIS_URL=redis://redis:6379
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

  postgres:
    image: postgres:17-alpine
    environment:
      POSTGRES_USER: snapotter
      POSTGRES_PASSWORD: snapotter     # 非ローカル展開の場合はこれを変更します
      POSTGRES_DB: snapotter
    volumes:
      - SnapOtter-pgdata:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U snapotter -d snapotter"]
      interval: 10s
      timeout: 5s
      retries: 12

  redis:
    image: redis:8-alpine
    command: ["redis-server", "--maxmemory-policy", "noeviction", "--appendonly", "yes"]
    volumes:
      - SnapOtter-redisdata:/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 12

volumes:
  SnapOtter-data:
  SnapOtter-workspace:
  SnapOtter-pgdata:
  SnapOtter-redisdata:

Docker Compose 経由の NVIDIA CUDA アクセラレーションには、SnapOtter サービスに deploy セクションを追加してください:

yaml
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

バージョン固定

タグ説明
latest最新リリース
2.2.0正確なバージョン
2.22.2.x の最新パッチ
22.x の最新マイナー

プラットフォーム

アーキテクチャGPU サポート備考
linux/amd64NVIDIA CUDAAI ツールの完全な CUDA アクセラレーション
linux/arm64CPU のみRaspberry Pi 4/5、Docker Desktop 経由の Apple Silicon

以前のタグからの移行

:cuda タグを使用していた場合は、:latest に切り替えて --gpus all をそのまま使用してください。GPU サポートは同じで、統合されたイメージです。

データと設定はボリューム内に保持されます。