2017-02-02 6 views
2

Ich bin mit dem offiziellen RabbitMQ Docker Bild (https://hub.docker.com/_/rabbitmq/)Wie konfiguriere ich rabbitmq.config in Docker Containern?

Ich habe versucht, die Bearbeitung der rabbitmq.config innerhalb der Containerdatei nach

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

jedoch ausgeführt wird, scheint dies auf der keine Wirkung haben Rabbitmq Server läuft im Container. Der Neustart des Containers hat offensichtlich auch nicht geholfen, da Docker eine komplett neue Instanz startet.

Also nahm ich an, dass die einzige Möglichkeit, rabbitmq.config für einen Docker-Container zu konfigurieren, war, es einzurichten, bevor der Container gestartet wird, was ich teilweise mithilfe der unterstützten Umgebungsvariablen des Abbilds tun konnte.

Leider werden nicht alle Konfigurationsoptionen von Umgebungsvariablen unterstützt. Zum Beispiel möchte ich {auth_mechanisms, ['PLAIN', 'AMQPLAIN', 'EXTERNAL']} in rabbitmq.config setzen.

Ich fand dann die Umgebungsvariable RABBITMQ_CONFIG_FILE, die mir erlauben sollte, auf die Datei zu zeigen, die ich als meine Conifg-Datei verwenden möchte. Allerdings habe ich kein Glück folgendes versucht:

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 

Die Standard rabbitmq.config Datei enthält:

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

ist das, was in dem Behälter ist, sobald es beginnt

was der beste Weg ist, zu konfigurieren rabbitmq.config in Docker Containern?

Antwort

7

die Config-Datei lebt in /etc/rabbitmq/rabbitmq.config also, wenn Sie Ihre eigene Konfigurationsdatei mit so etwas wie diese Halterung (ich verwende Docker-komponieren hier, um die Einrichtung des Bildes)

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

, dass es sollte

+1

Arbeitete einen Reiz. Prost! – AmazingBergkamp

+1

Clever. Vielen Dank! – bcattle

+0

Ich versuche mit 'COPY ./rabbitmq.config/etc/rabbitmq/rabbitmq.config' und dann 'CMD [" rabbitmq-server "] eine Konfigurationsdatei zu meinem eigenen Image hinzuzufügen, aber es scheint, dass die Datei, die ich hinzufüge, kommt überschrieben mit der Standard-Konfigurationsdatei. Es kann sein, dass die Standardkonfigurationsdatei mit dem Befehl "rabbit-server" erstellt wird –

0
tun

ich bin in der Lage RabbitMQ mit montiertem Config mit der folgenden bash Skript auszuführen:

#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 

ich habe auch die folgenden config Dateien in meinem rabbitmq/dev dir

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"} 
    ]} 
]. 
Verwandte Themen