Docker RabbitMQ 崩溃的容器
Docker Container with RabbitMQ crashing
首先,这似乎与此处发布的问题类似:
然而,几天后该线程似乎不活跃,我很想向唯一提供的答案提问,但我的声誉不够高,无法这样做。我还想尝试提供更多细节。基本上,我有一个公共托管服务器,我最近尝试将一些更改推送到该服务器,但 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=
并提供此 link:https://www.rabbitmq.com/configure.html
但是这个答案意味着您只需将不推荐使用的变量替换为他在 docker compose 中列出的变量。他的 link 没有对此提供任何说明,而是提供了一个不同的解决方案,即使用 rabbitmq.conf 文件。此外,仅在 docker compose 中使用它们代替旧变量会导致本地登录错误:
rabbitmq_1 | PLAIN login refused: user '' attempted to log in with a blank password,
which is prohibited by the internal authN backend. To use TLS/x509 certificate-based authentication, see the rabbitmq_auth_mechanism_ssl plugin and configure the client to use the EXTERNAL authentication mechanism. Alternatively change the password for the user to be non-blank.
他从哪里想出这个答案的,它真的像交换一组未弃用的变量一样简单吗?
如果 docker 需要 rabbitmq.conf 来编译,我应该把文件放在哪里?我在本地没有,网站提到 /etc/rabbitmq/rabbitmq.conf,但似乎只有在 docker 中没有 运行 时才会出现这种情况。我在本地也没有这个文件,docker 运行 没问题。
那RABBITMQ_ERLANG_COOKIE呢?该网站似乎没有显示替代方案,回复者也没有。
还有运行兔子docker单独使用docker-compose的方法吗?或者甚至是强制允许同时使用已弃用变量的方法,以便我的服务器再次 运行s?
我想提供更多信息,但我不确定在不冒共享敏感信息风险的情况下还可以共享哪些信息。请让我知道还有哪些其他信息可能有用
我找到了解决方案。 Rabbitmq 3.9 版确实弃用了这些变量,image: rabbitmq:3-management
行导致它获取 3.9 版。我将行更改为 image: rabbitmq:3.8-management
,效果很好。
您应该使用以下环境变量:
DEFAULT_VHOST=/
DEFAULT_USER=user1
DEFAULT_PASS=pass1
有关详细信息,请参阅 https://www.rabbitmq.com/configure.html。
或者使用其他版本的rabbitMQ比如3.8:
rabbitmq:3.8-management
首先,这似乎与此处发布的问题类似:
然而,几天后该线程似乎不活跃,我很想向唯一提供的答案提问,但我的声誉不够高,无法这样做。我还想尝试提供更多细节。基本上,我有一个公共托管服务器,我最近尝试将一些更改推送到该服务器,但 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=
并提供此 link:https://www.rabbitmq.com/configure.html
但是这个答案意味着您只需将不推荐使用的变量替换为他在 docker compose 中列出的变量。他的 link 没有对此提供任何说明,而是提供了一个不同的解决方案,即使用 rabbitmq.conf 文件。此外,仅在 docker compose 中使用它们代替旧变量会导致本地登录错误:
rabbitmq_1 | PLAIN login refused: user '' attempted to log in with a blank password, which is prohibited by the internal authN backend. To use TLS/x509 certificate-based authentication, see the rabbitmq_auth_mechanism_ssl plugin and configure the client to use the EXTERNAL authentication mechanism. Alternatively change the password for the user to be non-blank.
他从哪里想出这个答案的,它真的像交换一组未弃用的变量一样简单吗?
如果 docker 需要 rabbitmq.conf 来编译,我应该把文件放在哪里?我在本地没有,网站提到 /etc/rabbitmq/rabbitmq.conf,但似乎只有在 docker 中没有 运行 时才会出现这种情况。我在本地也没有这个文件,docker 运行 没问题。
那RABBITMQ_ERLANG_COOKIE呢?该网站似乎没有显示替代方案,回复者也没有。
还有运行兔子docker单独使用docker-compose的方法吗?或者甚至是强制允许同时使用已弃用变量的方法,以便我的服务器再次 运行s?
我想提供更多信息,但我不确定在不冒共享敏感信息风险的情况下还可以共享哪些信息。请让我知道还有哪些其他信息可能有用
我找到了解决方案。 Rabbitmq 3.9 版确实弃用了这些变量,image: rabbitmq:3-management
行导致它获取 3.9 版。我将行更改为 image: rabbitmq:3.8-management
,效果很好。
您应该使用以下环境变量:
DEFAULT_VHOST=/
DEFAULT_USER=user1
DEFAULT_PASS=pass1
有关详细信息,请参阅 https://www.rabbitmq.com/configure.html。
或者使用其他版本的rabbitMQ比如3.8:
rabbitmq:3.8-management