带有 RabbitMQ 崩溃的 Docker 容器

问题描述 投票:0回答:3

首先,这似乎与此处发布的问题类似: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 的兔子部分:

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 | PLAIN 登录被拒绝:用户 '' 尝试使用空白密码登录, 这是内部 authN 后端禁止的。要使用基于 TLS/x509 证书的身份验证,请参阅rabbitmq_auth_mechanism_ssl 插件并将客户端配置为使用 EXTERNAL 身份验证机制。或者将用户密码更改为非空。

他从哪里得出这个答案,真的像交换到一组未弃用的变量那么简单吗?

如果docker需要一个rabbitmq.conf来编译,我该把文件放在哪里?我本地没有,网站提到了 /etc/rabbitmq/rabbitmq.conf,但似乎只有在不在 docker 中运行时才会出现这种情况。我本地也没有这个文件,docker 运行良好。

RABBITMQ_ERLANG_COOKIE 怎么样?该网站似乎没有显示替代方案,响应者也没有。

还有单独使用 docker-compose 运行兔子 docker 的方法吗?或者甚至是一种方法来强制允许同时使用已弃用的变量,以便我的服务器再次运行?

我想提供更多信息,但我不确定在不冒分享敏感信息风险的情况下还可以分享什么。请让我知道还有哪些其他有用的信息

docker docker-compose rabbitmq
3个回答
1
投票

我找到了解决方案。 Rabbitmq 3.9 版本确实已弃用这些变量,并且

image: rabbitmq:3-management
行导致它获取 3.9 版本。我将线路更改为
image: rabbitmq:3.8-management
,效果非常好。


0
投票

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

DEFAULT_VHOST=/
DEFAULT_USER=user1
DEFAULT_PASS=pass1

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

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

rabbitmq:3.8-management

0
投票

更改版本即可实现,非常感谢

© www.soinside.com 2019 - 2024. All rights reserved.