使用rabbitmq docker镜像在rabbitmq.config中配置ssl

Jav*_*aSa 6 bash ssl rabbitmq docker docker-compose

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

现在我希望能够配置其他 rabbitmq 用户和密码而不是 defaults 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Rabbitmq dockerfile:

from rabbitmq:management

#and some certificate generating logic
Run Code Online (Sandbox Code Playgroud)

我注意到,一旦添加environment部分,当前rabbitmq.config文件可能被docker-entrypoint.sh 文件自动生成的配置覆盖。

为了使用证书构建配置,我找到了可以执行此操作的环境变量(查看此处)。但是没有找到任何ssl_listeners用它的端口定义部分的参考,如下所示rabbitmq.config

我的问题是:如何使用 env 变量创建如下所述的确切配置,或者如何rabbitmq.config以某种动态方式使用新用户和密码定义rabbitmq(可能是模板化配置文件)?

Tar*_*ani 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
Run Code Online (Sandbox Code Playgroud)

这将覆盖docker-entrpoint并仅运行rabbitmq服务器。现在./docker-entrypoint.sh还设置了某些环境变量。您的情况可能需要这些。所以为了确保你拥有所需的一切