This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Image Docker

SnapOtter est distribué sous la forme d'une seule image Docker. Exécutée seule, elle démarre un PostgreSQL 17 et un Redis embarqués sur l'interface de bouclage (mode embarqué) ; en production, exécutez-la aux côtés de conteneurs PostgreSQL 17 et Redis 8 distincts avec Compose. L'image de l'application fonctionne sur toutes les plateformes.

Démarrage rapide

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

Sans DATABASE_URL défini, l'exécution se fait en mode embarqué : PostgreSQL et Redis démarrent à l'intérieur du conteneur sur le bouclage, avec toutes les données sous le volume SnapOtter-data. Définissez DATABASE_URL et REDIS_URL (comme le fait la pile Compose) pour utiliser des services externes à la place. Voir Configuration.

Accélération NVIDIA CUDA

L'image inclut la prise en charge de NVIDIA CUDA sur amd64. Si vous avez un GPU NVIDIA avec le NVIDIA Container Toolkit installé, ajoutez --gpus all :

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

L'image détecte automatiquement CUDA au moment de l'exécution. Sans --gpus all, ou lorsque CUDA n'est pas disponible, les outils d'IA s'exécutent sur le CPU. La même image dans les deux cas.

L'accélération des iGPU Intel/AMD via VA-API, Quick Sync ou OpenCL n'est pas prise en charge aujourd'hui pour l'inférence IA de SnapOtter. Mapper /dev/dri dans le conteneur peut exposer le périphérique de rendu, mais le moteur d'exécution IA utilisera quand même le CPU à moins que CUDA soit disponible.

Benchmarks

Testé sur un NVIDIA RTX 4070 (12 Go de VRAM) avec un portrait JPEG de 572x1024.

Performances à chaud

OutilCPUGPUAccélération
Suppression d'arrière-plan (u2net)2 415 ms879 ms2,7x
Suppression d'arrière-plan (isnet)2 457 ms1 137 ms2,2x
Agrandissement 2x350 ms309 ms1,1x
Agrandissement 4x910 ms310 ms2,9x
OCR (PaddleOCR)137 ms94 ms1,5x
Floutage de visage139 ms122 ms1,1x

Démarrage à froid (première requête après le démarrage du conteneur)

OutilCPUGPUAccélération
Suppression d'arrière-plan22 286 ms4 792 ms4,7x
Agrandissement 2x3 957 ms2 318 ms1,7x
OCR (PaddleOCR)1 469 ms1 090 ms1,3x

Vérification de l'état de CUDA

Après la première requête IA, le point de terminaison d'état d'administration signale l'état du GPU CUDA :

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

Docker Compose

La pile Compose complète inclut l'application, PostgreSQL 17 et Redis 8. Voir Déploiement pour le fichier docker-compose.yml complet. Un exemple minimal :

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"]
      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:

Pour l'accélération NVIDIA CUDA via Docker Compose, ajoutez la section deploy au service SnapOtter :

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

Épinglage de version

TagDescription
latestDernière version
1.11.0Version exacte
1.11Dernier correctif de la 1.11.x
1Dernière version mineure de la 1.x

Plateformes

ArchitecturePrise en charge GPUNotes
linux/amd64NVIDIA CUDAAccélération CUDA complète pour les outils d'IA
linux/arm64CPU uniquementRaspberry Pi 4/5, Apple Silicon via Docker Desktop

Migration depuis les tags précédents

Si vous utilisiez le tag :cuda, passez à :latest et conservez --gpus all. Même prise en charge du GPU, image unifiée.

Vos données et paramètres sont préservés dans les volumes.