2017-02-02 7 views
2

Я использую официальный RabbitMQ Docker изображение (https://hub.docker.com/_/rabbitmq/)Как настроить rabbitmq.config внутри контейнеров Docker?

Я пытался редактировать rabbitmq.config файл внутри контейнера после запуска

docker exec -it <container-id> /bin/bash

Однако, это, кажется, не имеет никакого эффекта на сервер rabbitmq, работающий в контейнере. Перезагрузка контейнера явно не помогла, так как Docker запускает совершенно новый экземпляр.

Таким образом, я предположил, что единственный способ настроить rabbitmq.config для контейнера Docker состоял в том, чтобы установить его перед запуском контейнера, который я смог частично выполнить с использованием поддерживаемых переменных среды изображения.

К сожалению, не все параметры конфигурации поддерживаются переменными среды. Например, я хочу установить {auth_mechanisms, ['PLAIN', 'AMQPLAIN', 'EXTERNAL']} в rabbitmq.config.

Затем я нашел переменную окружения RABBITMQ_CONFIG_FILE, которая должна позволить мне указать на файл, который я хочу использовать в качестве моего файла conifg. Тем не менее, я попытался следующие без везения:

docker service create --name rabbitmq --network rabbitnet \ 
-e RABBITMQ_ERLANG_COOKIE='mycookie' --hostname = "{{Service.Name}}{{.Task.Slot}}" \ 
--mount type=bind,source=/root/mounted,destination=/root \ 
-e RABBITMQ_CONFIG_FILE=/root/rabbitmq.config rabbitmq 

по умолчанию rabbitmq.config файл, содержащий:

[ { rabbit, [ { loopback_users, [ ] } ] } ] 

является то, что в контейнере, как только он начинает

Какой лучший способ настройки rabbitmq.config внутри контейнеров-докеров?

ответ

7

конфигурационный файл живет в /etc/rabbitmq/rabbitmq.config так что если вы установите свой собственный конфигурационный файл с чем-то вроде этого (я использую докер-компоновать здесь, чтобы настроить изображение)

volumes: 
- ./conf/myrabbit.conf:/etc/rabbitmq/rabbitmq.config 

, который должен сделать это

+1

Работали шарм. Ура! – AmazingBergkamp

+1

Умный. Благодаря! – bcattle

+0

Я пытаюсь добавить файл конфигурации к своему собственному изображению с помощью 'COPY ./rabbitmq.config/etc/rabbitmq/rabbitmq.config', а затем' CMD ["rabbitmq-server"] ', но кажется, что файл, который я добавляю, перезаписанный конфигурационным файлом по умолчанию. может быть, что файл конфигурации по умолчанию создается командой «rabbit-server» –

0

Я могу запустить RabbitMQ с установленной конфигурацией, используя следующий скрипт: bash

#RabbitMQ props 
env=dev 
rabbitmq_name=dev_rabbitmq 
rabbitmq_port=5672 

#RabbitMQ container 
if [ "$(docker ps -aq -f name=${rabbitmq_name})" ]; then 
    echo Cleanup the existed ${rabbitmq_name} container 
    docker stop ${rabbitmq_name} && docker rm ${rabbitmq_name} 
    echo Create and start new ${rabbitmq_name} container 
    docker run --name ${rabbitmq_name} -d -p ${rabbitmq_port}:15672 -v $PWD/rabbitmq/${env}/data:/var/lib/rabbitmq:rw -v $PWD/rabbitmq/${env}/definitions.json:/opt/definitions.json:ro -v $PWD/rabbitmq/${env}/rabbitmq.config:/etc/rabbitmq/rabbitmq.config:ro rabbitmq:3-management 
else 
    echo Create and start new ${rabbitmq_name} container 
    docker run --name ${rabbitmq_name} -d -p ${rabbitmq_port}:15672 -v $PWD/rabbitmq/${env}/data:/var/lib/rabbitmq:rw -v $PWD/rabbitmq/${env}/definitions.json:/opt/definitions.json:ro -v $PWD/rabbitmq/${env}/rabbitmq.config:/etc/rabbitmq/rabbitmq.config:ro rabbitmq:3-management  
fi 

у меня есть следующий config файлов в моем rabbitmq/dev реж

definitions.json

{ 
     "rabbit_version": "3.7.3", 
     "users": [{ 
      "name": "welib", 
      "password_hash": "su55YoHBYdenGuMVUvMERIyUAqJoBKeknxYsGcixXf/C4rMp", 
      "hashing_algorithm": "rabbit_password_hashing_sha256", 
      "tags": "" 
     }, { 
      "name": "admin", 
      "password_hash": "x5RW/n1lq35QfY7jbJaUI+lgJsZp2Ioh6P8CGkPgW3sM2/86", 
      "hashing_algorithm": "rabbit_password_hashing_sha256", 
      "tags": "administrator" 
     }], 
     "vhosts": [{ 
      "name": "/" 
     }, { 
      "name": "dev" 
     }], 
     "permissions": [{ 
      "user": "welib", 
      "vhost": "dev", 
      "configure": ".*", 
      "write": ".*", 
      "read": ".*" 
     }, { 
      "user": "admin", 
      "vhost": "/", 
      "configure": ".*", 
      "write": ".*", 
      "read": ".*" 
     }], 
     "topic_permissions": [], 
     "parameters": [], 
     "global_parameters": [{ 
      "name": "cluster_name", 
      "value": "[email protected]" 
     }], 
     "policies": [], 
     "queues": [], 
     "exchanges": [], 
     "bindings": [] 
    } 

rabbitmq.config

[ 
    {rabbit, [ 
     {loopback_users, []}, 
     {vm_memory_high_watermark, 0.7}, 
     {vm_memory_high_watermark_paging_ratio, 0.8}, 
     {log_levels, [{channel, warning}, {connection, warning}, {federation, warning}, {mirroring, info}]}, 
     {heartbeat, 10} 
    ]}, 
    {rabbitmq_management, [ 
     {load_definitions, "/opt/definitions.json"} 
    ]} 
]. 
Смежные вопросы