Docker Image Tags
Stirling Image ships three Docker image variants to fit different use cases.
Full (default)
docker pull stirlingimage/stirling-image:latestIncludes all tools: image processing, AI-powered background removal, upscaling, face blurring, object erasing, and OCR. Size is ~11 GB due to bundled ML models.
Lite
docker pull stirlingimage/stirling-image:liteIncludes all image processing tools (resize, crop, rotate, convert, compress, watermark, collage, and 20+ more) but excludes AI/ML tools. Size is ~1-2 GB.
Use this if you:
- Only need standard image processing (no AI features)
- Are running on constrained hardware (Raspberry Pi, small VPS)
- Want faster pulls and smaller disk footprint
Tools excluded from lite
| Tool | What it does |
|---|---|
| Remove Background | AI-powered background removal |
| Upscale | AI super-resolution upscaling |
| Blur Faces | AI face detection and blurring |
| Erase Object | AI inpainting to remove objects |
| OCR | Optical character recognition |
All other tools (27+) work identically in both variants.
CUDA (GPU acceleration)
docker pull stirlingimage/stirling-image:cudaSame tools as the full image, but built with GPU-accelerated Python packages (onnxruntime-gpu, PyTorch CUDA, PaddlePaddle GPU). The image auto-detects your NVIDIA GPU at runtime and falls back to CPU if none is found.
Requires NVIDIA Container Toolkit on the host. Linux amd64 only.
Benchmarks
Tested on an NVIDIA RTX 4070 (12 GB VRAM) with a 572x1024 JPEG portrait. Both images ran on the same machine. "Warm" means the model is already loaded in memory (second request onward).
Warm performance
| Tool | CPU | GPU | Speedup |
|---|---|---|---|
| Background removal (u2net) | 2,415ms | 879ms | 2.7x |
| Background removal (isnet) | 2,457ms | 1,137ms | 2.2x |
| Upscale 2x | 350ms | 309ms | 1.1x |
| Upscale 4x | 910ms | 310ms | 2.9x |
| OCR (PaddleOCR) | 137ms | 94ms | 1.5x |
| Face blur | 139ms | 122ms | 1.1x |
Cold start (first request after container start)
| Tool | CPU | GPU | Speedup |
|---|---|---|---|
| Background removal | 22,286ms | 4,792ms | 4.7x |
| Upscale 2x | 3,957ms | 2,318ms | 1.7x |
| OCR (PaddleOCR) | 1,469ms | 1,090ms | 1.3x |
Cold start includes loading the model into memory. GPU cold starts are faster because CUDA parallelizes the model loading.
Larger images show bigger speedups, especially for upscaling. Non-AI tools (resize, crop, convert, etc.) are unaffected since they use Sharp (CPU-based).
GPU health check
After the first AI request, the admin health endpoint reports GPU status:
GET /api/v1/admin/health
{"ai": {"gpu": true}}Docker Compose
Full
services:
stirling-image:
image: stirlingimage/stirling-image:latest
ports:
- "1349:1349"
volumes:
- stirling-data:/data
- stirling-workspace:/tmp/workspace
volumes:
stirling-data:
stirling-workspace:Lite
services:
stirling-image:
image: stirlingimage/stirling-image:lite
ports:
- "1349:1349"
volumes:
- stirling-data:/data
- stirling-workspace:/tmp/workspace
volumes:
stirling-data:
stirling-workspace:CUDA
services:
stirling-image:
image: stirlingimage/stirling-image:cuda
ports:
- "1349:1349"
volumes:
- stirling-data:/data
- stirling-workspace:/tmp/workspace
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
volumes:
stirling-data:
stirling-workspace:Switching from lite to full
To upgrade from lite to full and unlock AI tools:
- Stop your container
- Pull the full image:
docker pull stirlingimage/stirling-image:latest - Update your compose file or run command to use
:latestinstead of:lite - Start the container
Your data and settings are preserved in the volumes.
Version pinning
Both variants support semver tags for pinning:
| Tag | Description |
|---|---|
latest | Latest full release |
lite | Latest lite release |
cuda | Latest full release with GPU support |
1.6.0 | Exact full version |
1.6.0-lite | Exact lite version |
1.6.0-cuda | Exact CUDA version |
1.6 | Latest patch in 1.6.x (full) |
1.6-lite | Latest patch in 1.6.x (lite) |
1.6-cuda | Latest patch in 1.6.x (CUDA) |