Beanstalkd + Console
Simple, fast work queue with web UI.
Overview
Beanstalkd is a simple, fast work queue designed for high throughput and low latency job processing. Originally created by Keith Rarick in 2007, beanstalkd follows a minimalist philosophy with a straightforward protocol that makes it easy to integrate with applications written in any programming language. Unlike complex message brokers, beanstalkd focuses on doing one thing well: managing job queues with features like job priorities, delays, and automatic retry mechanisms.
This stack combines the beanstalkd daemon with a web-based management console that provides real-time visibility into queue operations. The beanstalkd service handles job queuing operations on port 11300 using its simple text-based protocol, while the console application connects to the daemon and exposes a web interface on port 2080 for monitoring tube statistics, job states, and queue depths. The console communicates with beanstalkd through the standard protocol, allowing administrators to inspect jobs, manage tubes, and troubleshoot queue issues without command-line tools.
This combination is ideal for developers building distributed applications that need reliable task queuing without the complexity of enterprise message brokers. Small to medium-sized teams benefit from beanstalkd's operational simplicity and the console's visual interface for monitoring job flows. The lightweight nature of both components makes this stack perfect for microservices architectures, background job processing systems, and any application requiring asynchronous task execution with minimal infrastructure overhead.
Key Features
- Simple text-based protocol supporting put, reserve, delete, and touch operations
- Tube-based job organization allowing logical separation of different job types
- Job priority system with configurable priority levels from 0 to 4294967295
- Delayed job execution with precise timing control for scheduled tasks
- Automatic job time-to-run (TTR) management with configurable timeouts
- Real-time web dashboard showing tube statistics, ready jobs, and buried jobs
- Job state visualization including ready, reserved, delayed, and buried states
- Interactive job management through the web console for debugging and monitoring
Common Use Cases
- 1Background email processing for web applications with variable send volumes
- 2Image and video processing pipelines requiring queued transcoding jobs
- 3E-commerce order fulfillment systems managing inventory and shipping workflows
- 4Social media platforms handling like, comment, and notification processing
- 5IoT data processing systems queuing sensor data for batch analysis
- 6Web scraping operations coordinating multiple crawler instances
- 7Report generation systems managing long-running analytical tasks
Prerequisites
- Docker and Docker Compose installed on the host system
- Minimum 256MB RAM available for both beanstalkd and console containers
- Ports 11300 and 2080 available and not blocked by firewall rules
- Basic understanding of job queue concepts and asynchronous processing
- Network connectivity between application clients and the beanstalkd port
- Web browser access to port 2080 for console management interface
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 beanstalkd: 3 image: schickling/beanstalkd:latest4 container_name: beanstalkd5 restart: unless-stopped6 ports: 7 - "11300:11300"89 console: 10 image: schickling/beanstalkd-console:latest11 container_name: beanstalkd-console12 environment: 13 BEANSTALKD_HOST: beanstalkd14 BEANSTALKD_PORT: 1130015 ports: 16 - "2080:2080"17 depends_on: 18 - beanstalkd.env Template
.env
1# No additional config neededUsage Notes
- 1Docs: https://beanstalkd.github.io/
- 2Beanstalkd on port 11300, console at http://localhost:2080
- 3Simple protocol: put (add job), reserve (get job), delete (complete)
- 4Tubes for job segregation - like topics/queues
- 5Delayed jobs: put with delay parameter
- 6Lightweight - great for simple task queues
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
beanstalkd
beanstalkd:
image: schickling/beanstalkd:latest
container_name: beanstalkd
restart: unless-stopped
ports:
- "11300:11300"
console
console:
image: schickling/beanstalkd-console:latest
container_name: beanstalkd-console
environment:
BEANSTALKD_HOST: beanstalkd
BEANSTALKD_PORT: 11300
ports:
- "2080:2080"
depends_on:
- beanstalkd
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 beanstalkd:5 image: schickling/beanstalkd:latest6 container_name: beanstalkd7 restart: unless-stopped8 ports:9 - "11300:11300"1011 console:12 image: schickling/beanstalkd-console:latest13 container_name: beanstalkd-console14 environment:15 BEANSTALKD_HOST: beanstalkd16 BEANSTALKD_PORT: 1130017 ports:18 - "2080:2080"19 depends_on:20 - beanstalkd21EOF2223# 2. Create the .env file24cat > .env << 'EOF'25# No additional config needed26EOF2728# 3. Start the services29docker compose up -d3031# 4. View logs32docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/beanstalkd/run | bashTroubleshooting
- Console shows 'Connection refused' to beanstalkd: Verify beanstalkd container is running and check Docker network connectivity between services
- Jobs appear stuck in reserved state: Check if worker processes are properly deleting completed jobs or if TTR timeout is too short
- Cannot connect to beanstalkd from external applications: Ensure port 11300 is properly exposed and firewall allows connections
- Console interface not loading at localhost:2080: Verify console container is running and BEANSTALKD_HOST environment variable is correctly set
- High memory usage in beanstalkd container: Check for buried jobs accumulation or jobs with very large payloads consuming memory
- Jobs disappearing without processing: Examine if job TTR is expiring before workers complete processing, causing jobs to return to ready state
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Ad Space
Shortcuts: C CopyF FavoriteD Download