2017-08-03 59 views
1

我的目標是建立與SSL支持,這是使用以下rabbitmq.config文件,它駐留在主機的/etc/rabbitmq路徑之前實現的RabbitMQ配置在rabbitmq.config SSL。使用RabbitMQ的搬運工圖像

現在我想能夠配置其他rabbitmq用戶和密碼比默認guestguest

我使用的RabbitMQ搬運工圖像與以下搬運工-撰寫配置:

version: '2' 
services: 
    rabbitmq: 
     build: ./rabbitmq 
     ports: 
      - "8181:8181" 
     expose: 
      - "15672" 
      - "8181" 
     volumes: 
      - /etc/rabbitmq:/etc/rabbitmq 

     environment: 
      RABBITMQ_DEFAULT_USER: user123 
      RABBITMQ_DEFAULT_PASS: 1234 

RabbitMQ的配置

[{rabbit, 
    [ 
    {loopback_users, []}, 
    {heartbeat,0}, 
    {ssl_listeners, [8181]}, 
    {ssl_options, [{cacertfile, "/etc/rabbitmq/ca/cacert.pem"}, 
        {certfile, "/etc/rabbitmq/server/cert.pem"}, 
        {keyfile, "/etc/rabbitmq/server/key.pem"}, 
        {verify,verify_none}, 
        {fail_if_no_peer_cert,false}]} 
    ]} 
]. 

的RabbitMQ dockerfile

from rabbitmq:management 

#and some certificate generating logic 

我注意到,一旦在添加部environment,電流rabbitmq.config文件可能通過docker-entrypoint.sh file重寫具有自動生成的配置。

對於使用我發現環境變量的證書可以做到這一點(看here)構建配置。 但是沒有找到任何引用定義與它的端口ssl_listeners部分,下面rabbitmq.config

如看到我的問題是:我怎麼可以創建精確的配置下使用ENV變量提到怎麼可以仍然以某種動態的方式(也許模板化的配置文件)定義新的用戶名和密碼的RabbitMQ礦rabbitmq.config

回答

0

試試這個

version: '2' 
services: 
    rabbitmq: 
     build: ./rabbitmq 
     ports: 
      - "8181:8181" 
     expose: 
      - "15672" 
      - "8181" 
     volumes: 
      - /etc/rabbitmq:/etc/rabbitmq 
     command: rabbitmq-server 
     entrypoint: "" 
     environment: 
      RABBITMQ_DEFAULT_USER: user123 
      RABBITMQ_DEFAULT_PASS: 1234 

這將覆蓋docker-entrpoint,只是運行的RabbitMQ服務器。現在./docker-entrypoint.sh也設置了某些環境變量。你的情況可能需要。因此,確保您擁有所需的一切

+0

此解決方案的輸出等同於根本不編寫環境部分,因爲docker入口點正在使用這些來添加與來賓默認用戶不同的用戶。 – JavaSa

+0

然後下一個選項是複製docker-entrypoint.sh並根據您的需要對其進行自定義,然後使用docker-compose中的卷映射來共享它以在加載圖像時覆蓋該文件。如果你想要,你可以選擇這種方法 –

+0

如果你給環境變量,如上面提到的鏈接,而不是根據環境部分重新創建'rabbitmq.config'而不是覆蓋入口點。 – JavaSa