docker - 与Docker结合使用的RabbitMQ在运行时被替换成了Rabbitmq.config文件

标签 docker rabbitmq docker-compose dockerfile

我已经尝试了很多次,每次我运行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/

相关文章:

python - 为什么 AWS SageMaker 运行 Web 服务器进行批量转换?

java - 由于缺少兔子工厂,Spring Boot 集成测试失败

docker - 在构建 docker 容器时在已挂载的卷上创建文件

Docker-compose --isolation=hyperv 标签

docker - 将 sudo 添加到 docker 镜像的简单方法

linux - Linux Docker 中的 Umbraco

hadoop - 资源管理器没有节点

node.js - RabbitMq 中的 assertQueue 和 send To Queue 有什么区别

react-native - RabbitMQ React Native 发送示例

python - 将 Thrift 客户端连接到同一主机上不同 docker 容器中的 Thrift 服务器