Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thenaubit/bull-board-dockerized
⚡ This is a production-ready, heavily optimized, Docker image for bull-board. It allows you to monitor your bull queues without coding a web server just for that, just launch the Docker image!
https://github.com/thenaubit/bull-board-dockerized
bull bull-board bullmq dashboard docker docker-compose docker-image dockerfile dockerized monitor queue
Last synced: about 5 hours ago
JSON representation
⚡ This is a production-ready, heavily optimized, Docker image for bull-board. It allows you to monitor your bull queues without coding a web server just for that, just launch the Docker image!
- Host: GitHub
- URL: https://github.com/thenaubit/bull-board-dockerized
- Owner: TheNaubit
- License: mit
- Created: 2024-06-29T23:18:51.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-07-22T16:32:51.000Z (4 months ago)
- Last Synced: 2024-07-22T20:04:28.735Z (4 months ago)
- Topics: bull, bull-board, bullmq, dashboard, docker, docker-compose, docker-image, dockerfile, dockerized, monitor, queue
- Language: TypeScript
- Homepage: https://hub.docker.com/repository/docker/nauverse/bull-board/general
- Size: 463 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# ⚡ Bull Board Dockerized
![Docker Pulls](https://img.shields.io/docker/pulls/nauverse/bull-board)
![Repo social image](https://github.com/TheNaubit/bull-board-dockerized/blob/21e83dbc080475d49bf749e68f3e2a7cffd5f9ca/header.png?raw=true)
This is a production-ready, heavily optimized, Docker image for [bull-board](https://github.com/felixmosh/bull-board). It allows you to monitor your bull queues without coding a web server just for that, just launch the Docker image!
It supports `bull` and `bullmq`.
## Features
- 🔒 **Optional auth integrated**: I implemented some `Basic` auth to secure the dashboard.
- ⚡ **Ultra performant**: Behind the scenes it only has a `distroless` image that launches a tiny fast web server with the Bull Board.
- 🔧 **Configurable**: There are several `.env` config options allowing you to customize the behavior of your image.
- 👮 **Secure**: Auth, logging, CSP headers... everything integrated to improve your deployment (just remember, security is not guaranteed, you have to do your own work on that!)## Quick start with Docker
```bash
docker run -p 3000:3000 nauverse/bull-board
```This code will expose the webserver on `localhost:3000`. It will also try to connect to your Redis instance on `localhost:6379` (without any password, read below for more settings).
## Quick start with Docker Compose
```yaml
bullboard:
container_name: bullboard
image: nauverse/bull-board
restart: unless-stopped
pull_policy: always
ports:
- "3000:3000"
```This `docker-compose.yaml` file will launch the image and expose it at `localhost:3000`. Again, it will try to connect to your Redis instance on `localhost:6379`.
## Environment variables
- `REDIS_URL` - [Optional] A Redis URL with any connection param you need. By default it uses `redis://localhost:6379`.
- `BULL_PREFIX` - [Optional] Used to prefix your bull queue name. By default it uses `bull`.
- `BULL_VERSION` - [Optional] Version of the Bull lib to use. It can be `BULLMQ` or `BULL`. By default it is `BULLMQ`.
- `BASE_PATH` - [Optional] The base URL where the internal web server will expose the board and all its resources. By default it is `/`.
- `LOG_LEVEL` - [Optional] The minimum log level to display. It can be `trace`, `debug`, `info`, `warn`, `error`, `fatal`. By default it is `info`.
- `LOG_ANONYMIZE_IP` - [Optional] A boolean to determine if the web server should anonymice any IP found in the request logs (for privacy complaint). By default it is `false`.
- `USER_USERNAME` - [Optional] A string containing the username used to identify the user. If added, you must also specify the `USER_PASSWORD` env var. If any of those are not set, the auth won't be enabled. By default it is not set.
- `USER_PASSWORD` - [Optional] A string containing the passoword used to identify the user. If added, you must also specify the `USER_USERNAME` env var. If any of those are not set, the auth won't be enabled. By default it is not set.## Complete example with `docker-compose.yaml`
### `docker-compose.yaml`
```yaml
services:
redis:
container_name: redis
restart: unless-stopped
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD}
image: redis:6
ulimits:
memlock: -1
ports:
- "6379:6379"
volumes:
- redis_data:/data
command:
[
"redis-server",
"--requirepass",
"${REDIS_PASSWORD}",
"--maxmemory-policy",
"noeviction",
]
healthcheck:
test:
- CMD-SHELL
- "redis-cli -a $${REDIS_PASSWORD} ping"
interval: 5s
timeout: 20s
retries: 10bullboard:
container_name: bullboard
image: nauverse/bull-board
restart: unless-stopped
pull_policy: always
ports:
- "3000:3000"
environment:
REDIS_URL: ${REDIS_URL}
BULL_PREFIX: bull
USER_USERNAME: ${BULL_BOARD_AUTH_USER}
USER_PASSWORD: ${BULL_BOARD_AUTH_PASSWORD}
LOG_ANONYMIZE_IP: "true"
depends_on:
- redisvolumes:
redis_data:
```### `.env`
```
REDIS_PASSWORD=supersecurepassword
REDIS_URL=redis://default:${REDIS_PASSWORD}@redis:6379
BULL_BOARD_AUTH_USER="mysupersecretusername"
BULL_BOARD_AUTH_PASSWORD="anothersupersecurepassword"
```Then launch it with:
```bash
docker compose up -d
```And stop it with:
```bash
docker compose down
```## TODO
- Allow setting the uiConfig optional parameters using the `.env` file
- Create tests for the HTTP server
- Improve the documentation
- Deploy it as a a single-file standalone executable (using the `bun` [compile option](https://bun.sh/docs/bundler/executables)). I need to wait for that since `bun` does not export `node_modules` into the binary (yet) [https://github.com/oven-sh/bun/issues/8967](https://github.com/oven-sh/bun/issues/8967)
- ✅ ~~Create a GitHub action to automatize the build process when there is a push to the main branch~~## Notes
- Do not compile it to a single standalone executable with the `--minify` param since it breaks the internal code.
- When publishing, make sure to change `` with the new version code (until I automatize the process).