Esta página se tradujo automáticamente. ¿Detectaste un error?Ayuda a mejorarla.
Skip to content

Imagen Docker ​

SnapOtter se distribuye como una única imagen Docker. Al ejecutarla por sí sola, arranca un PostgreSQL 17 y un Redis embebidos en la interfaz de loopback (modo embebido); para producción, ejecútala junto a contenedores separados de PostgreSQL 17 y Redis 8 con Compose. La imagen de la aplicación funciona en todas las plataformas.

Inicio rápido ​

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

Sin ningún DATABASE_URL definido, esto se ejecuta en modo embebido: PostgreSQL y Redis arrancan dentro del contenedor en loopback, con todos los datos bajo el volumen SnapOtter-data. Define DATABASE_URL y REDIS_URL (como hace la pila de Compose) para usar servicios externos en su lugar. Consulta Configuración.

Aceleración NVIDIA CUDA ​

La imagen incluye compatibilidad con NVIDIA CUDA en amd64. Si tienes una GPU NVIDIA con el NVIDIA Container Toolkit instalado, añade --gpus all:

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

La imagen detecta CUDA automáticamente en tiempo de ejecución. Sin --gpus all, o cuando CUDA no está disponible, las herramientas de IA se ejecutan en CPU. La misma imagen en cualquier caso.

La aceleración por iGPU de Intel/AMD mediante VA-API, Quick Sync u OpenCL no es compatible hoy con la inferencia de IA de SnapOtter. Mapear /dev/dri dentro del contenedor puede exponer el dispositivo de render, pero el runtime de IA seguirá usando la CPU salvo que CUDA esté disponible.

Benchmarks ​

Probado en una NVIDIA RTX 4070 (12 GB de VRAM) con un retrato JPEG de 572x1024.

Rendimiento en caliente ​

HerramientaCPUGPUAceleración
Eliminación de fondo (u2net)2.415ms879ms2,7x
Eliminación de fondo (isnet)2.457ms1.137ms2,2x
Escalado 2x350ms309ms1,1x
Escalado 4x910ms310ms2,9x
Desenfoque de rostros139ms122ms1,1x

Arranque en frío (primera petición tras iniciar el contenedor) ​

HerramientaCPUGPUAceleración
Eliminación de fondo22.286ms4.792ms4,7x
Escalado 2x3.957ms2.318ms1,7x

OCR no está incluido en la comparación CUDA. Tanto el nivel Tesseract integrado como los niveles RapidOCR/ONNX opcionales utilizan CPU, incluso cuando el contenedor tiene acceso NVIDIA GPU.

Comprobación de estado de CUDA ​

Tras la primera petición de IA, el endpoint de salud de administración informa del estado de la GPU CUDA:

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

Docker Compose ​

La pila completa de Compose incluye la aplicación, PostgreSQL 17 y Redis 8. Consulta Despliegue para el docker-compose.yml completo. Un ejemplo mínimo:

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     # Cambie esto para implementaciones no locales
      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:

Para la aceleración NVIDIA CUDA mediante Docker Compose, añade la sección deploy al servicio de SnapOtter:

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

Fijado de versiones ​

EtiquetaDescripción
latestÚltima versión
2.2.0Versión exacta
2.2Último parche en 2.2.x
2Última versión menor en 2.x

Plataformas ​

ArquitecturaSoporte de GPUNotas
linux/amd64NVIDIA CUDAAceleración CUDA completa para herramientas de IA
linux/arm64Solo CPURaspberry Pi 4/5, Apple Silicon mediante Docker Desktop

Migración desde etiquetas anteriores ​

Si usabas la etiqueta :cuda, cambia a :latest y conserva --gpus all. Mismo soporte de GPU, imagen unificada.

Tus datos y ajustes se conservan en los volúmenes.