问题描述
我有一个 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 run
和 docker-compose up
之间有什么区别?
环境:
Docker 版本 20.10.4,构建 d3cb89e
docker-compose 版本 1.27.3,构建未知
亚马逊 Linux 4.14.231-173.360.amzn2.x86_64
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)