docker.recipes

Beanstalkd + Console

beginner

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:latest
4 container_name: beanstalkd
5 restart: unless-stopped
6 ports:
7 - "11300:11300"
8
9 console:
10 image: schickling/beanstalkd-console:latest
11 container_name: beanstalkd-console
12 environment:
13 BEANSTALKD_HOST: beanstalkd
14 BEANSTALKD_PORT: 11300
15 ports:
16 - "2080:2080"
17 depends_on:
18 - beanstalkd

.env Template

.env
1# No additional config needed

Usage Notes

  1. 1Docs: https://beanstalkd.github.io/
  2. 2Beanstalkd on port 11300, console at http://localhost:2080
  3. 3Simple protocol: put (add job), reserve (get job), delete (complete)
  4. 4Tubes for job segregation - like topics/queues
  5. 5Delayed jobs: put with delay parameter
  6. 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 file
2cat > docker-compose.yml << 'EOF'
3services:
4 beanstalkd:
5 image: schickling/beanstalkd:latest
6 container_name: beanstalkd
7 restart: unless-stopped
8 ports:
9 - "11300:11300"
10
11 console:
12 image: schickling/beanstalkd-console:latest
13 container_name: beanstalkd-console
14 environment:
15 BEANSTALKD_HOST: beanstalkd
16 BEANSTALKD_PORT: 11300
17 ports:
18 - "2080:2080"
19 depends_on:
20 - beanstalkd
21EOF
22
23# 2. Create the .env file
24cat > .env << 'EOF'
25# No additional config needed
26EOF
27
28# 3. Start the services
29docker compose up -d
30
31# 4. View logs
32docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/beanstalkd/run | bash

Troubleshooting

  • 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