使用“时出现rabbitmq身份验证错误”;docker compose up“;而不是",;docker run“;

使用“时出现rabbitmq身份验证错误”;docker compose up“;而不是",;docker run“;,docker,docker-compose,rabbitmq,pika,Docker,Docker Compose,Rabbitmq,Pika,我有一个Python应用程序,它使用连接到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 re

我有一个Python应用程序,它使用连接到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)”拒绝访问-使用普通身份验证机制拒绝登录。有关详细信息,请参阅代理日志文件。“,”

这似乎很奇怪,我可以从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