Docker image for bull-board. Allow you to monitor your bull queue without any coding!
Supports both bull and bullmq.
Important
Drop of 32-bit support from v2.0.0 (due to problems with Node.js 20 in 32-bit mode)
docker run -p 3000:3000 venatum/bull-board:latest
will run bull-board interface on localhost:3000 and connect to your redis instance on localhost:6379 without password.
To configure redis see "Environment variables" section.
services:
bullboard:
container_name: bullboard
image: venatum/bull-board
restart: unless-stopped
ports:
- "3000:3000"will run bull-board interface on localhost:3000 and connect to your redis instance on localhost:6379 without password.
see "Example with docker-compose" section, for example, with env parameters
It is now possible to use the BullBoard image with Redis Sentinel mode. Please note that on the interface, the Redis server info button will not work. Feel free to contribute to the development directly at felixmosh/bull-board
Redis
REDIS_HOST- host to connect to redis (localhostby default)REDIS_PORT- redis port (6379by default)REDIS_DB- redis db to use ('0'by default)REDIS_USE_TLS- enable TLS true or false (falseby default)REDIS_USER- user to connect to redis (no user by default, Redis 6+)REDIS_PASSWORD- password to connect to redis (no password by default)REDIS_FAMILY- IP Stack version (one of 4 | 6 | 0) (0by default)SENTINEL_NAME- name of sentinel instance (required with sentinel)SENTINEL_HOSTS- a string containing a list of replica servers (e.g. '1.redis:26379,2.redis:26379,3.redis:26379'), overridesREDIS_HOST+REDIS_PORTconfiguration (you can use,or;)MAX_RETRIES_PER_REQUEST- makes sure commands won't wait forever when the connection is down (disablednullby default)
Sentinel Advanced Options
SENTINEL_ROLE- role to connect to, either 'master' or 'slave' (masterby default)SENTINEL_USERNAME- username for authenticating with Sentinel (disabled by default)SENTINEL_PASSWORD- password for authenticating with Sentinel (disabled by default)SENTINEL_COMMAND_TIMEOUT- timeout for Sentinel commands in milliseconds (disabled by default)SENTINEL_TLS_ENABLED- enable TLS for Sentinel mode (falseby default)SENTINEL_UPDATE- whether to update the list of Sentinels (falseby default)SENTINEL_MAX_CONNECTIONS- maximum number of connections to Sentinel (10by default)SENTINEL_FAILOVER_DETECTOR- whether to enable failover detection (falseby default)
Redis Advanced Options
REDIS_COMMAND_TIMEOUT- timeout for commands in milliseconds (disabled by default)REDIS_SOCKET_TIMEOUT- timeout for socket in milliseconds (disabled by default)REDIS_KEEP_ALIVE- enable/disable keep-alive functionality, value in milliseconds (0by default)REDIS_NO_DELAY- enable/disable Nagle's algorithm (trueby default)REDIS_CONNECTION_NAME- set the name of the connection to make it easier to identify (disabled by default)REDIS_AUTO_RESUBSCRIBE- auto resubscribe to channels when reconnecting (trueby default)REDIS_AUTO_RESEND_UNFULFILLED- resend unfulfilled commands on reconnect (trueby default)REDIS_CONNECT_TIMEOUT- connection timeout in milliseconds (10000by default)REDIS_ENABLE_OFFLINE_QUEUE- enable/disable the offline queue (trueby default)REDIS_ENABLE_READY_CHECK- enable/disable the ready check (trueby default)
Interface
BULL_BOARD_HOSTNAME- host to bind the server to (0.0.0.0by default)PORT- port to bind the server to (3000by default)PROXY_PATH- proxyPath for bull board, e.g. https://<server_name>/my-base-path/queues [docs] (''by default)USER_LOGIN- login to restrict access to bull-board interface (disabled by default)USER_PASSWORD- password to restrict access to bull-board interface (disabled by default)
Queue setup
BULL_PREFIX- prefix to your bull queue name (bullby default)BULL_VERSION- version of bull lib to use 'BULLMQ' or 'BULL' (BULLMQby default)BACKOFF_STARTING_DELAY- The delay, in milliseconds, before starts the research for the first time (500by default)BACKOFF_MAX_DELAY- The maximum delay, in milliseconds, between two consecutive attempts (Infinityby default)BACKOFF_TIME_MULTIPLE- TheBACKOFF_STARTING_DELAYis multiplied by theBACKOFF_TIME_MULTIPLEto increase the delay between reattempts (2by default)BACKOFF_NB_ATTEMPTS- The maximum number of times to attempt the research (10by default)
BullBoard UI based on felixmosh/bull-board
Default values come from the original project
BULL_BOARD_TITLE- The Board and page titles (Bull Dashboardby default)BULL_BOARD_LOGO_PATH- Allows you to specify a different logo (emptyby default)BULL_BOARD_LOGO_WIDTH-BULL_BOARD_LOGO_PATHis requiredBULL_BOARD_LOGO_HEIGHT-BULL_BOARD_LOGO_PATHis requiredBULL_BOARD_FAVICON- Allows you to specify the default favicon (emptyby default)BULL_BOARD_FAVICON_ALTERNATIVE-BULL_BOARD_FAVICONis requiredBULL_BOARD_LOCALE- The locale to useBULL_BOARD_DATE_FORMATS_SHORT- The date format to useBULL_BOARD_DATE_FORMATS_COMMON- The date format to useBULL_BOARD_DATE_FORMATS_FULL- The date format to use
To restrict access to bull-board use USER_LOGIN and USER_PASSWORD env vars.
Only when both USER_LOGIN and USER_PASSWORD specified, access will be restricted with login/password
The project includes a comprehensive test suite using Jest. The tests cover all major components of the application:
- Redis configuration and client
- Bull queue setup
- Express application setup and routes
- Health check endpoint
- Configuration loading
- Authentication
To run the tests:
# Run all tests
npm test
# Run tests in watch mode (useful during development)
npm run test:watch
# Run tests with coverage report
npm run test:coverageA Healthcheck based on NestJS is available to monitor the status of the container and the Redis service. /healthcheck
{
"status": "ok",
"info": {
"redis": {
"status": "up",
"description": "Based on the Redis PING/PONG system"
}
}
}| Field | Description | Type |
|---|---|---|
status |
Indicates the overall health status. If any health indicator fails, the status will be 'error'. | 'ok' or 'error' |
info |
Object containing information of each health indicator which is of status 'up', or in other words "healthy". | object |
error |
String containing information of each health indicator which is of status 'down', or in other words "unhealthy". | string |
details |
Object containing all information of each health indicator | object |
services:
redis:
container_name: redis
image: redis:alpine
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- redis_db_data:/data
bullboard:
container_name: bullboard
image: venatum/bull-board:latest
restart: unless-stopped
environment:
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: example-password
REDIS_USE_TLS: 'false'
BULL_PREFIX: bull
ports:
- "3000:3000"
depends_on:
- redis
volumes:
redis_db_data:
external: false