【问题标题】:Configuring ssl in rabbitmq.config using rabbitmq docker image使用 rabbitmq docker 镜像在 rabbitmq.config 中配置 ssl
【发布时间】:2018-01-11 02:50:50
【问题描述】:

我的目标是设置 rabbitmq 支持 ssl,这是以前使用下面的 rabbitmq.config 文件实现的,该文件位于主机的 /etc/rabbitmq 路径中。

现在我希望能够配置其他 rabbitmq 用户和密码而不是默认值 guest guest

我正在使用具有以下 docker-compose 配置的 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

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 变量创建如下所述的确切配置 OR 我怎样才能保留我的 rabbitmq.config 使用新用户定义 rabbitmq 和以某种动态方式输入密码(可能是配置文件的模板)?

【问题讨论】:

    标签: bash ssl docker rabbitmq docker-compose


    【解决方案1】:

    试试这个

    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 也设置了某些环境变量。您的情况可能需要哪个。因此,请确保您拥有所需的一切

    【讨论】:

    • 这个解决方案的输出相当于根本不写环境部分,因为docker入口点正在使用这些来添加不同于guest默认用户的用户。
    • 然后下一个选项是复制 docker-entrypoint.sh 并根据您的需要对其进行自定义,然后使用 docker-compose 中的卷映射共享它以在加载图像时覆盖文件。如果你愿意,你可以选择这种方法
    • 如果您提供上述链接中提到的环境变量,并且没有覆盖入口点而不是 rabbitmq.config 正在根据环境部分重新创建。
    • 好的,我明白了,你能提供一个例子吗?顺便说一句,使用模板配置文件并用环境变量值填充它怎么样,你能想到我们该怎么做吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多