RabbitMQ - 如何在 docker-compose 中使用自定义配置文件?

Hen*_*nri 6 rabbitmq docker-compose

我是使用rabbitmq和docker-compose的初学者。

我不知道如何使用我自己的配置文件...启动时,rabbitmq 服务不断退出并出现错误:

rabbitmq1   | 2022-06-17 14:50:43.578486+00:00 [error] <0.130.0> Failed to load advanced configuration file "/etc/rabbitmq/rabbitmq.config": 1: syntax error before:
Run Code Online (Sandbox Code Playgroud)

我的conf文件如下(myrabbit.conf)

consumer_timeout = 10000
Run Code Online (Sandbox Code Playgroud)

该文件与 docker-compose 文件位于同一目录中,即:

version: "3"
services:
  rabbitmq:
    image: rabbitmq:3-management
    container_name: rabbitmq1
    hostname: 'rabbitmq'
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
     - ~/.docker-conf/rabbitmq/data/:/var/lib/rabbitmq/mnesia/
     - ./myrabbit.conf:/etc/rabbitmq/rabbitmq.config #problematic line I guess...
    restart: always
Run Code Online (Sandbox Code Playgroud)

其他测试:而不是这个:

- ./myrabbit.conf:/etc/rabbitmq/rabbitmq.config
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时:

- myrabbit.conf:/etc/rabbitmq/rabbitmq.config
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR: Named volume "myrabbit.conf:/etc/rabbitmq/rabbitmq.config:rw" is used in service "rabbitmq" but no declaration was found in the volumes section.
Run Code Online (Sandbox Code Playgroud)

Hen*_*nri 8

我终于让它发挥作用了。

这是我所做的:

  1. 在与 docker-compose.yml 文件相同的目录中创建一个名为“rabbitmq”的目录
  2. 在该新目录中,创建文件:rabbitmq.conf(待确认,但似乎必须是该名称)。
  3. 调整 docker-compose.yml 文件如下:
version: "3"
services:
  rabbitmq:
    image: rabbitmq:3-management
    container_name: rabbitmq
    hostname: 'rabbitmq'
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
     - ~/.docker-conf/rabbitmq/data/:/var/lib/rabbitmq/mnesia/
     - ./rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
    restart: always
Run Code Online (Sandbox Code Playgroud)

在启动过程中,您应该看到: 在此输入图像描述

这意味着rabbitmq服务很好地使用了自定义conf文件。

希望它能帮助其他人...