A thin, professional wrapper around the official rabbitmq:*-management image
(Docker Hub) — tracking the floating
4-management tag (latest RabbitMQ 4.x; major pinned to avoid a 5.x jump).
It keeps the upstream image intact and layers on three concerns that the old BAUER GROUP broker did by hand:
| Concern | Old solution | This image |
|---|---|---|
| TLS certificate | openssl in entrypoint, self-signed only |
Layered: self-signed / managed LE / BYO |
| Tuning config | sed patching a committed 90-custom.conf |
envsubst-rendered 90-tuning.conf from env |
| Plugins | manual rabbitmq-plugins enable notes in .env |
baked default set + runtime env toggles |
Baked into etc/rabbitmq/enabled_plugins:
rabbitmq_management, rabbitmq_prometheus, rabbitmq_shovel,
rabbitmq_shovel_management, rabbitmq_federation, rabbitmq_federation_management.
AMQP 0-9-1 and AMQP 1.0 are core protocols in RabbitMQ 4.x (no plugin needed).
Optional protocols are shipped but off; enable per deployment via env:
RABBITMQ_ENABLE_MQTT, RABBITMQ_ENABLE_WEB_MQTT, RABBITMQ_ENABLE_STOMP,
RABBITMQ_ENABLE_WEB_STOMP (=true). The entrypoint runs
rabbitmq-plugins enable --offline before the node starts.
RabbitMQ reads every /etc/rabbitmq/conf.d/*.conf alphabetically (later wins):
10-defaults.conf— generated by the upstream entrypoint fromRABBITMQ_DEFAULT_USER/RABBITMQ_DEFAULT_PASS/RABBITMQ_DEFAULT_VHOST. (Setting a default user means the insecureguestaccount is never created; the init container also actively deletes it as defense-in-depth.)20-base.conf— our static structural settings (listeners, TLS paths, management, prometheus, TCP options).90-tuning.conf— rendered at boot bydocker-entrypoint-custom.shfrom90-tuning.conf.template+ environment (sizing knobs).
| Mode | Behaviour |
|---|---|
selfsigned (default) |
Generates a 4096-bit, 10-year self-signed cert with the BAUER GROUP subject on first boot. Zero-config; clients must trust it. |
managed |
Uses cert.pem/key.pem written into the certs volume by a traefik-certs-dumper sidecar (real Let's Encrypt). Falls back to self-signed if absent (optionally waits RABBITMQ_TLS_MANAGED_WAIT seconds). |
byo |
Uses operator-mounted cert.pem/key.pem; fails fast if missing. |
In every mode the entrypoint guarantees ca.pem exists and chmod 600s the key.
docker build \
--build-arg RABBITMQ_VERSION=4-management \
-t ghcr.io/bauer-group/cs-rabbitmq/rabbitmq:local .See the repository root README.md and docs/ for full deployment guidance.