Skip to main content

Docker Deployment

Advanced Docker deployment configurations for Imagor Studio.

Docker Compose

Create a docker-compose.yml file for easier management:

version: "3.8"

services:
imagor-studio:
image: shumc/imagor-studio:latest
ports:
- "8000:8000"
volumes:
- ./imagor-studio-data:/app/data
- ~/Pictures:/app/gallery:ro
environment:
- DATABASE_URL=sqlite:///app/data/imagor-studio.db
- PORT=8000
restart: unless-stopped

Start the service:

docker-compose up -d

Advanced Configurations

With S3 Storage

version: "3.8"

services:
imagor-studio:
image: shumc/imagor-studio:latest
ports:
- "8000:8000"
volumes:
- ./imagor-studio-data:/app/data
environment:
- DATABASE_URL=sqlite:///app/data/imagor-studio.db
- STORAGE_TYPE=s3
- S3_BUCKET=my-images-bucket
- S3_REGION=us-east-1
- S3_ACCESS_KEY_ID=your_access_key
- S3_SECRET_ACCESS_KEY=your_secret_key
restart: unless-stopped

Environment Variables

Common environment variables for Docker deployment:

# Database
DATABASE_URL=sqlite:///app/data/imagor-studio.db

# Server
PORT=8000
JWT_SECRET=your-secret-key
JWT_EXPIRATION=168h

# Storage
STORAGE_TYPE=file
FILE_BASE_DIR=/app/gallery

# Security
ALLOW_GUEST_MODE=false
LICENSE_KEY=your-license-key

Persistent Data

Ensure your data persists across container restarts:

volumes:
- ./imagor-studio-data:/app/data # Database and config
- ~/Pictures:/app/gallery:ro # Image files (read-only)

Health Checks

Add health checks to your deployment:

healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s

Resource Limits

Set resource limits for production:

deploy:
resources:
limits:
cpus: "2"
memory: 2G
reservations:
cpus: "1"
memory: 1G

Next Steps