RabbitMQ与Docker组合rabbitmq.config文件在运行时被replace

我已经尝试了这个次数,每次我运行docker-compose up我的rabbitmq.config文件被取代。

以下是我的dockerfile。

 FROM rabbitmq:3.6.11-managment RUN rabbitmq-plugins enable rabbitmq_management RUN rabbitmq-plugins list COPY ./config/rabbitmq.config ../../etc/rabbitmq/ COPY ./config/test.json ../../etc/rabbitmq/ 

这是我的Docker-Compose文件。

 version: '2' services: rabbit: build: context: . dockerfile: rabbit.dockerfile container_name: rabbit hostname: lightrabbit networks: - rabnet environment: - RABBITMQ_DEFAULT_USER=abcd - RABBITMQ_DEFAULT_PASS=pass volumes: - ./config/rabbitmq:/etc/rabbitmq:rw - ./data:/var/lib/rabbitmq:rw - ./logs:/var/log/rabbitmq:rw ports: - 15672:15672 - 5672:5672 volumes: rabbitdata: driver: local networks: rabnet: driver: bridge 

我甚至添加了一个卷映射到文件夹来testing它。 我正在运行的原因RUN rabbitmq-plugins enable rabbitmq_management在我的dockerfile中RUN rabbitmq-plugins enable rabbitmq_management rabbitmq_management是因为pipe理插件在默认情况下未启用。

更改我的docker文件到这个

 FROM rabbitmq:3.6.11-management COPY rabbitmq.config /etc/rabbitmq/ RUN chmod 777 /etc/rabbitmq/rabbitmq.config WORKDIR /var/lib/rabbitmq/ RUN rabbitmq-plugins enable rabbitmq_management --offline RUN rabbitmq-plugins list 

和我撰写文件到这个

 version: '2' services: rabbit: build: context: . dockerfile: rabbit.dockerfile container_name: rabbit hostname: lightrabbit networks: - rabnet environment: - RABBITMQ_DEFAULT_USER=lighttrading - RABBITMQ_DEFAULT_PASS=P@ssw0rd_rabbit ports: - 15672:15672 - 5672:5672 volumes: rabbitdata: driver: local networks: rabnet: driver: bridge 

其中一个棘手的部分是它的一个必须在我们的rabbitmq.config里面定义这个部分,另外明智的运行命令rabbitmq-plugins enable rabbitmq_management将不起作用

 { rabbitmq_management, [ { listener, [ { port, 15672 }, { ssl, false } ] }, { load_definitions, "/etc/rabbitmq/definitions.json" } ] }