【问题标题】:RabbitMQ With With Docker Compose rabbitmq.config file gets replaced on RunRabbitMQ With With Docker Compose rabbitmq.config 文件在运行时被替换
【发布时间】:2017-09-08 08:37:17
【问题描述】:

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


    【解决方案1】:

    将我的 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" }
        ] }
    

    【讨论】:

      猜你喜欢
      • 2021-08-16
      • 2022-01-16
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      相关资源
      最近更新 更多