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

Docker Image

SnapOtter는 단일 Docker 이미지로 제공됩니다. 자체적으로 실행하면 루프백 인터페이스에서 임베디드 PostgreSQL 17과 Redis를 시작합니다(임베디드 모드). 프로덕션 환경에서는 Compose로 별도의 PostgreSQL 17 및 Redis 8 컨테이너와 함께 실행하세요. 앱 이미지는 모든 플랫폼에서 동작합니다.

Quick start

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을 설정하세요. Configuration을 참고하세요.

NVIDIA CUDA acceleration

이 이미지는 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를 사용합니다.

Benchmarks

572x1024 JPEG 인물 사진으로 NVIDIA RTX 4070(12 GB VRAM)에서 테스트했습니다.

Warm performance

ToolCPUGPUSpeedup
Background removal (u2net)2,415ms879ms2.7x
Background removal (isnet)2,457ms1,137ms2.2x
Upscale 2x350ms309ms1.1x
Upscale 4x910ms310ms2.9x
OCR (PaddleOCR)137ms94ms1.5x
Face blur139ms122ms1.1x

Cold start (first request after container start)

ToolCPUGPUSpeedup
Background removal22,286ms4,792ms4.7x
Upscale 2x3,957ms2,318ms1.7x
OCR (PaddleOCR)1,469ms1,090ms1.3x

CUDA health check

첫 번째 AI 요청 이후, 관리자 상태 확인 엔드포인트가 CUDA GPU 상태를 보고합니다:

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

Docker Compose

전체 Compose 스택에는 앱, PostgreSQL 17, Redis 8이 포함됩니다. 전체 docker-compose.ymlDeployment를 참고하세요. 최소 예시는 다음과 같습니다:

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:

Docker Compose를 통한 NVIDIA CUDA 가속을 위해서는 SnapOtter 서비스에 deploy 섹션을 추가하세요:

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

Version pinning

TagDescription
latest최신 릴리스
1.11.0정확한 버전
1.111.11.x의 최신 패치
11.x의 최신 마이너

Platforms

ArchitectureGPU supportNotes
linux/amd64NVIDIA CUDAAI 도구에 대한 완전한 CUDA 가속
linux/arm64CPU onlyRaspberry Pi 4/5, Docker Desktop을 통한 Apple Silicon

Migration from previous tags

:cuda 태그를 사용하고 있었다면, :latest로 전환하고 --gpus all를 유지하세요. GPU 지원은 동일하며, 통합된 이미지입니다.

데이터와 설정은 볼륨에 보존됩니다.