使用rabbitmq docker镜像在rabbitmq.config中configurationssl

我的目标是用ssl支持来设置rabbitmq,以前使用位于主机的/etc/rabbitmqpath下的rabbitmq.config文件来实现。

现在我想能够configuration其他的rabbitmq用户和密码比默认的guest guest

我正在使用以下docker-composeconfiguration的rabbitmq docker镜像:

 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 

Rabbitmqconfiguration

 [{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文件自动生成configuration。

对于使用证书构buildconfiguration,我发现可以做到这一点的环境variables(看这里 )。 但是没有find任何有关使用其端口定义ssl_listeners部分的参考,如下面的rabbitmq.config

我的问题是 :如何使用envvariables创build如下所述的精确configuration? 或者我怎样才能保持与我的rabbitmq.config定义rabbitmq与新的用户和密码在一些dynamic的方式(也许模板configuration文件)?

尝试这个

 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设置了某些环境variables。 你的情况可能需要。 所以要确保你有所需要的一切