2017-08-03 57 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