This page was machine-translated. Spotted a mistake?Help improve it.
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
OCR (PaddleOCR)137ms94ms1,5x
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 (PaddleOCR)1.469ms1.090ms1,3x

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

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
1.11.0Versión exacta
1.11Último parche en 1.11.x
1Última versión menor en 1.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.