Help us improve
Share bugs, ideas, or general feedback.
From saleor-commerce
Deploys Saleor to production via Docker Compose with API, Celery workers, PostgreSQL, Redis, React dashboard, Next.js storefront; covers Saleor Cloud, env vars, S3 storage, DB management, scaling. Use for Saleor deployments.
npx claudepluginhub orcaqubits/agentic-commerce-skills-plugins --plugin saleor-commerceHow this skill is triggered — by the user, by Claude, or both
Slash command
/saleor-commerce:saleor-deployThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Fetch live docs**:
Sets up Saleor dev environment: saleor-platform Docker Compose stack, CLI tooling, PostgreSQL/Redis prereqs, manage.py commands, env vars, project structure. For new Saleor projects.
Deploys, diffs, introspects, validates Saleor store configs via configurator CLI. Explains flags, JSON output, CI/CD setup, and debugging.
Guides Medusa v2 production deployment: build process, server vs worker modes, PostgreSQL/Redis config, environment variables, and checklists.
Share bugs, ideas, or general feedback.
Fetch live docs:
site:docs.saleor.io deployment production setup for production deployment guidehttps://github.com/saleor/saleor-platform for Docker Compose reference configurationsite:docs.saleor.io environment variables configuration for required environment variablessaleor Celery worker configuration production for Celery setup detailssite:docs.saleor.io cloud for Saleor Cloud managed hosting optionsSaleor provides an official Dockerfile with a multi-stage build:
| Stage | Purpose | Base Image |
|---|---|---|
| build | Install dependencies, compile assets | python:3.12-slim |
| production | Run the application | python:3.12-slim |
| Service | Image | Purpose | Port |
|---|---|---|---|
| api | saleor (custom build) | GraphQL API server (Gunicorn) | 8000 |
| worker | saleor (same image) | Celery worker process | N/A |
| db | postgres:15-alpine | PostgreSQL database | 5432 |
| redis | redis:7-alpine | Cache and Celery broker | 6379 |
| dashboard | saleor-dashboard | React admin UI | 9002 |
| storefront | Custom Next.js | Customer-facing storefront | 3000 |
| Feature | Description |
|---|---|
| Managed API | Fully managed Saleor backend, no server maintenance |
| Auto-scaling | Scales based on traffic automatically |
| Managed database | PostgreSQL with backups and replication |
| CDN | Built-in CDN for media and static assets |
| Environments | Staging and production environments per project |
| CLI integration | Deploy and manage via saleor CLI |
Access via https://cloud.saleor.io/ — create projects, manage environments, and deploy Apps.
| Variable | Description | Example |
|---|---|---|
DATABASE_URL | PostgreSQL connection string | postgres://user:pass@host:5432/saleor |
SECRET_KEY | Django secret key (50+ chars) | Random string |
ALLOWED_HOSTS | Comma-separated hostnames | api.example.com,localhost |
DEFAULT_FROM_EMAIL | Sender email address | noreply@example.com |
CELERY_BROKER_URL | Redis URL for Celery | redis://redis:6379/1 |
| Variable | Description | Default |
|---|---|---|
DEBUG | Django debug mode | False |
ALLOWED_CLIENT_HOSTS | Storefront origins for CORS | localhost |
DEFAULT_CURRENCY | Fallback currency code | USD |
DEFAULT_COUNTRY | Fallback country code | US |
MAX_CHECKOUT_LINE_QUANTITY | Max qty per checkout line | 50 |
JAEGER_AGENT_HOST | OpenTelemetry/Jaeger host | None |
SENTRY_DSN | Sentry error tracking DSN | None |
Celery runs as a separate process using the same Saleor codebase:
| Setting | Value | Description |
|---|---|---|
| Broker | Redis | CELERY_BROKER_URL = redis://redis:6379/1 |
| Result backend | Redis | Optional, for task result storage |
| Concurrency | --concurrency=4 | Number of worker threads |
| Queues | celery (default) | Default task queue name |
| Beat | Optional | Periodic task scheduler |
| Task | Purpose |
|---|---|
| Webhook delivery | Send async webhook payloads to Apps |
| Email sending | Transactional emails (order confirmation, etc.) |
| Thumbnail generation | Generate product image thumbnails |
| Search indexing | Update search index entries |
| Export processing | Handle CSV/XLSX data exports |
| Variable | Description | Example |
|---|---|---|
AWS_MEDIA_BUCKET_NAME | S3 bucket name | saleor-media-prod |
AWS_MEDIA_CUSTOM_DOMAIN | CDN domain for media | media.example.com |
AWS_ACCESS_KEY_ID | IAM access key | IAM credential |
AWS_SECRET_ACCESS_KEY | IAM secret key | IAM credential |
AWS_S3_REGION_NAME | S3 region | us-east-1 |
AWS_S3_ENDPOINT_URL | Custom S3 endpoint (for MinIO, GCS) | https://s3.example.com |
| Setting | Recommendation |
|---|---|
| Version | PostgreSQL 14 or 15 |
| Connection pooling | Use PgBouncer in transaction mode |
| SSL | Require SSL connections (sslmode=require in DATABASE_URL) |
| Backups | Automated daily backups with point-in-time recovery |
| Extensions | pg_trgm (required for search), btree_gin |
| Max connections | Size for Gunicorn workers + Celery workers + buffer |
| Purpose | Database | Variable |
|---|---|---|
| Cache | redis://redis:6379/0 | CACHE_URL |
| Celery broker | redis://redis:6379/1 | CELERY_BROKER_URL |
Run migrations during deployment before starting the new application version:
python manage.py migrate --noinput before starting Gunicorn/Celery with new codepython manage.py sqlmigrate <app> <migration>| Component | Strategy | Notes |
|---|---|---|
| API (Gunicorn) | Add replicas behind load balancer | Stateless, scale freely |
| Celery workers | Add worker processes/containers | Scale based on queue depth |
| Database | Read replicas for queries | Write goes to primary |
| Redis | Redis Cluster or managed Redis | Separate cache from broker |
| Component | Tune |
|---|---|
| Gunicorn | --workers (2 * CPU + 1), --threads per worker |
| Celery | --concurrency based on task type (I/O vs CPU) |
| PostgreSQL | shared_buffers, work_mem, effective_cache_size |
| Tool | Purpose | Integration |
|---|---|---|
| Sentry | Error tracking | SENTRY_DSN environment variable |
| OpenTelemetry | Distributed tracing | OTEL_EXPORTER_OTLP_ENDPOINT |
| Prometheus | Metrics collection | django-prometheus middleware |
| Health check | Liveness and readiness probes | /health/ endpoint |
| Item | Action |
|---|---|
DEBUG | Set to False |
SECRET_KEY | Strong random value, stored in env var |
ALLOWED_HOSTS | Restrict to actual domain names |
| Database | SSL enabled, connection pooling, backups configured |
| Media storage | S3-compatible with CDN |
| Celery | Running as separate process with monitoring |
| HTTPS | SSL termination at load balancer or reverse proxy |
| Migrations | Applied before deploying new code |
| Monitoring | Sentry, metrics, and health checks enabled |
Fetch the deployment documentation for current Docker setup, environment variables, and scaling recommendations before implementing.