使用“docker-compose up”而不是“docker run”时rabbitmq身份验证错误

问题描述

我有一个 Python 应用程序,它使用 pika 连接到 RabbitMQ 代理。基本上,我像这样连接到代理,效果很好:

import pika

parameters = pika.URLParameters('amqp://user:pass@server:5672/queue')
connection = pika.BlockingConnection(parameters)

现在我正在从这个应用程序构建一个 Docker 镜像

FROM python:3.9-slim
workdir /app
copY requirements.txt .
RUN pip install -r requirements.txt
copY . .
ENTRYPOINT[ "python","-m","my_app"]

而且我正在使用 docker-compose,因为我讨厌记住长 docker run 命令或有一堆 shell 脚本来处理 start/stop/rm/logs 等。

version: '3'

services:
  my-app:
    image: 'my-app:latest'
    volumes: 
      - /path/to/app.conf:/app/app.conf
    command: 'run --config app.conf'
    tty: true

现在,当我使用 docker-compose up 启动容器时,我收到来自 rabbitmq 的身份验证错误

AMQPConnector - 报告失败:AMQPConnectorAMQPHandshakeError:ProbableAuthenticationError:客户端在连接阶段断开连接,指示可能的身份验证错误:(“ConnectionClosedBybroker:(403)'ACCESS_REFUSED - 登录被拒绝使用身份验证机制 PLAIN。有关详细信息,请参阅代理日志文件。 '",)

这看起来很奇怪,我能够从我的 Python 终端使用相同的配置连接得很好。

但我真的不明白:

docker run -ti -v /path/to/app.conf:/app/app.conf my-app run --config app.conf

现在当容器启动时,身份验证工作正常。

这怎么可能?在这种情况下,docker rundocker-compose up 之间有什么区别?

环境:

Docker 版本 20.10.4,构建 d3cb89e
docker-compose 版本 1.27.3,构建未知
亚马逊 Linux 4.14.231-173.360.amzn2.x86_64

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...