我已经尝试了很多次,每次我运行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
我什至在该文件夹中添加了卷映射以对其进行测试。
我在dockerfile中运行
RUN rabbitmq-plugins enable rabbitmq_management
的原因是因为默认情况下未启用管理插件。
最佳答案
将我的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" }
] }
关于docker - 与Docker结合使用的RabbitMQ在运行时被替换成了Rabbitmq.config文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46112177/