【问题标题】:Dropping container with RabbitMQ in Docker在 Docker 中使用 RabbitMQ 删除容器
【发布时间】:2021-07-31 07:50:59
【问题描述】:

我尝试用 RabbitMQ 启动一个 Docker 容器,结果下载了镜像,但是容器没有启动。我在日志中收到以下消息:

error: RABBITMQ_DEFAULT_PASS is set but deprecated
error: RABBITMQ_DEFAULT_USER is set but deprecated
error: RABBITMQ_DEFAULT_VHOST is set but deprecated
error: RABBITMQ_ERLANG_COOKIE is set but deprecated
error: deprecated environment variables detected

这个问题是最近出现的,在此之前一切正常并开始。

这是我的 docker-compose 兔子:

rabbit:
    image: "rabbitmq:3-management"
    hostname: "rabbit"
    environment:
        RABBITMQ_ERLANG_COOKIE: 'SWQOKODSQALRPCLNMEQGW'
        RABBITMQ_DEFAULT_USER: 'user'
        RABBITMQ_DEFAULT_PASS: 'bitnami'
        RABBITMQ_DEFAULT_VHOST: '/'
    ports:
        - "15672:15672"
        - "5672:5672"
    labels:
        NAME: "rabbitmq"    
    networks:
        - postgres

【问题讨论】:

  • 来自official rabbitmq dockerhub page:“环境变量 ... 警告:从 RabbitMQ 3.9 开始,所有下面列出的特定于 docker 的变量已弃用且不再使用。请改用配置文件;访问 rabbitmq.com/configure 以了解有关配置文件的更多信息。作为起点,3.8 图像将打印出配置文件从提供的环境变量生成。... - RABBITMQ_DEFAULT_PASS ... - RABBITMQ_DEFAULT_USER"

标签: docker rabbitmq


【解决方案1】:

RabbitMQ(3.9)的最新稳定docker镜像最近更新了,官方镜像页面说:

As of RabbitMQ 3.9, all of the docker-specific variables listed below are deprecated and no longer used.

我已经通过以下方式解决了这个问题:

  1. 在 docker compose 所在的同一文件夹中创建一个 rabbitmq.conf 文件 文件存在

  2. 按照here 的准则和命名约定将变量放入其中。比如:

    default_vhost = /
    default_user = user
    default_pass = bitnami
    
  3. 在 docker compose 文件中,放置 volumes 部分而不是 environment 部分并将 rabbitmq.conf 文件安装到正确的路径(取决于操作系统,请遵循 here )。对于 linux 容器,它将是这样的:

    rabbit:
        image: "rabbitmq:3-management"
        hostname: "rabbit"
        volumes:
          - "./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf"
        ports:
          - "15672:15672"
          - "5672:5672"
        labels:
          NAME: "rabbitmq"    
        networks:
          - postgres
    

【讨论】:

  • 这可能比我的答案更好,因为它解决了实际错误,而不是在工作时恢复到版本。然而,它出现的全部原因是因为我们使用的是 3 管理,这对于一个不断发展的项目来说简直是不好的做法。所以我想我会补充一点,一旦问题得到解决,就值得做 3.9 管理,以避免将来从外部添加重大更改。不知道他们是否在升级到 4.0 之前计划了 3.10,他们当然可以再次改变这样做的方式。
【解决方案2】:

您应该使用以下环境变量:

DEFAULT_VHOST=/
DEFAULT_USER=user1
DEFAULT_PASS=pass1

请参阅https://www.rabbitmq.com/configure.html 了解更多信息。

或者使用其他版本的rabbitMQ,比如3.8:

rabbitmq:3.8-management

【讨论】:

    【解决方案3】:

    线

    image: "rabbitmq:3-management"
    

    基本上(我认为)获得最新的 Rabbit 稳定版本,即 3.9,已弃用这些变量。如果您希望继续使用最新版本的 rabbit,您必须使用配置文件。看到到目前为止您可能一直在使用 3.8,我想这比它的价值还多。您可以改用 3.8,方法是将行更改为:

    image: "rabbitmq:3.8-management"
    

    这些变量在这个版本中没有被弃用,也不会抛出这些错误。

    【讨论】:

      【解决方案4】:

      如果有人只使用Dockerfile,请将您的配置添加到同一文件夹中,并将此行添加到您的Dockerfile

      COPY ./rabbitmq.conf /etc/rabbitmq/rabbitmq.conf

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-22
        • 2019-04-01
        • 2017-08-10
        • 2019-10-10
        • 1970-01-01
        相关资源
        最近更新 更多