首先,这似乎是一个类似的问题,张贴在这里:Dropping container with RabbitMQ in Docker
然而,线程似乎不活跃后,几天,我很想问问题,唯一提供的答案,但我的声誉不够高,这样做.我也想尝试提供一些更多的细节.基本上,我有一个公共托管的服务器,我最近试图推动一些变化,但是gitlab部署失败了。就后端而言,变化非常小(实际上只是一个添加的变量),当我试图撤销更改时,我收到了来自docker的相同错误:
error: RABBITMQ_DEFAULT_PASS is set but deprecated
error: RABBITMQ_DEFAULT_USER is set but deprecated
error: RABBITMQ_ERLANG_COOKIE is set but deprecated
error: deprecated environment variables detected
字符串
我从来没有能够在本地重现这个。似乎在重新启动或重新编译时,RabbitMQ已经开始在服务器上给出这些错误。我不熟悉RabbitMQ,但我猜他们最近已经将其从警告转换为错误,因此导致我的服务器在重新部署时崩溃。我的docker-compose.yml的rabbit部分:
rabbitmq:
image: rabbitmq:3-management
environment:
RABBITMQ_ERLANG_COOKIE: secret
RABBITMQ_DEFAULT_USER: [REDACTED]
RABBITMQ_DEFAULT_PASS: [REDACTED]
networks:
- backend
ports:
- 15672:15672
- 5672:5672
型
另一个线程的响应建议使用这些变量:
DEFAULT_VHOST=/
DEFAULT_USER=
DEFAULT_PASS=
型
链接:https://www.rabbitmq.com/configure.html
但是这个答案意味着你只需要用他在docker compose中列出的变量来替换那些被弃用的变量。他的链接没有对此进行说明,而是提供了一个不同的解决方案,那就是使用rabbitmq.conf文件。此外,在docker compose中使用它们来替换旧变量会导致本地登录错误:
rabbitmq_1|普通登录被拒绝:用户“”尝试使用内部authN后端禁止的空密码登录。要使用TLS/x509基于证书的身份验证,请参阅rabbitmq_auth_mechanism_ssl插件并将客户端配置为使用外部身份验证机制。或者将用户的密码更改为非空。
他是从哪里得出这个答案的,真的就像交换到一组未被弃用的变量一样简单吗?
如果一个docker需要一个rabbitmq.conf来编译,我应该把这个文件放在哪里?我在本地没有一个,网站上提到了/etc/rabbitmq/rabbitmq.conf,但这似乎只是在它不在docker中运行的情况下。我也没有这个文件在本地,docker运行得很好。
那么RABBITMQ_ERLANG_COOKIE呢?网站似乎没有显示它的替代品,响应者也没有。
是否还有一种方法可以单独使用docker-compose来运行rabbit docker?或者甚至还有一种方法可以在此期间强制允许使用已弃用的变量,以便我的服务器再次运行?
我想提供更多的信息,但我不知道还有什么可以分享,而不冒分享敏感信息的风险。请让我知道其他信息可能有用
2条答案
按热度按时间txu3uszq1#
我找到了解决方案。Rabbitmq 3.9版确实已经弃用了这些变量,而
image: rabbitmq:3-management
这一行导致它抓取了3.9版。我将该行改为image: rabbitmq:3.8-management
,这一行运行得很好。pxiryf3j2#
您应该使用以下环境变量:
字符串
请参阅https://www.rabbitmq.com/configure.html了解更多信息。
或者使用其他版本的rabbitMQ,如3.8:
型