diff --git a/deployment/develop/docker/docker-compose.yaml b/deployment/develop/docker/docker-compose.yaml index 7e801ff..c42a0ae 100644 --- a/deployment/develop/docker/docker-compose.yaml +++ b/deployment/develop/docker/docker-compose.yaml @@ -23,12 +23,15 @@ services: timeout: 5s retries: 5 environment: - RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER} - RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD} + RABBITMQ_USER: ${RABBITMQ_USER} + RABBITMQ_PASSWORD: ${RABBITMQ_PASSWORD} + entrypoint: ["/usr/local/bin/docker-entrypoint-wrapper.sh"] + command: ["rabbitmq-server"] volumes: + - ./rabbit/docker-entrypoint-wrapper.sh:/usr/local/bin/docker-entrypoint-wrapper.sh:ro - ./rabbitmq_plugins/enabled_plugins:/etc/rabbitmq/enabled_plugins:ro - ./rabbit/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro - - ./rabbit/definitions.json:/etc/rabbitmq/definitions.json:ro + - ./rabbit/definitions.json:/etc/rabbitmq/definitions.template.json:ro networks: - internal - proxy diff --git a/deployment/develop/rabbit/definitions.json b/deployment/develop/rabbit/definitions.json index 50c94d8..d8c3b60 100644 --- a/deployment/develop/rabbit/definitions.json +++ b/deployment/develop/rabbit/definitions.json @@ -3,6 +3,13 @@ "rabbitmq_version": "4.2.2", "product_name": "RabbitMQ", "product_version": "4.2.2", + "users": [ + { + "name": "RABBITMQ_USER_PLACEHOLDER", + "password": "RABBITMQ_PASSWORD_PLACEHOLDER", + "tags": ["administrator"] + } + ], "vhosts": [ { "name": "sim-vhost" @@ -10,7 +17,7 @@ ], "permissions": [ { - "user": "guest", + "user": "RABBITMQ_USER_PLACEHOLDER", "vhost": "sim-vhost", "configure": ".*", "write": ".*", diff --git a/deployment/develop/rabbit/docker-entrypoint-wrapper.sh b/deployment/develop/rabbit/docker-entrypoint-wrapper.sh new file mode 100755 index 0000000..a960ee7 --- /dev/null +++ b/deployment/develop/rabbit/docker-entrypoint-wrapper.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -eu + +# Substitute env vars into definitions template before RabbitMQ starts. +# RabbitMQ 4.x skips default user creation when definitions.json is loaded, +# so the user must be defined in the JSON itself. +sed \ + -e "s|RABBITMQ_USER_PLACEHOLDER|${RABBITMQ_USER}|g" \ + -e "s|RABBITMQ_PASSWORD_PLACEHOLDER|${RABBITMQ_PASSWORD}|g" \ + /etc/rabbitmq/definitions.template.json > /etc/rabbitmq/definitions.json + +exec docker-entrypoint.sh "$@"