无法从Mac本地主机的Docker容器访问rabbitmq Web管理

use*_*300 6 rabbitmq docker docker-compose

我最近为一个需要 Docker、MongoDB 容器和 RabbitMQ 容器的项目安装了 Docker for Mac。我正在使用 docker-compose.xml 文件来创建容器。到目前为止,我可以通过 localhost:27017 从容器访问 MongoDB 数据库。

但是,我无法使用 localhost:15672 访问管理插件。我正在使用 RabbitMQ 的管理映像,但这根本不起作用。这是我的配置文件的副本:

docker-compose-yml:

version: '2'
services:
 mongo:
    container_name: "mongo1"
    tty: true
    image: mongo:latest
    environment:
      - MONGO_DATA_DIR=/data/db
      - MONGO_LOG_DIR=/dev/null
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=***************
    volumes:
      - /data/db:/data/db
    ports:
        - 27017:27017
    command: "mongod --smallfiles --auth"
 rabbitmq:
    container_name: "rabbitmq1"
    tty: true
    image: rabbitmq:management
    ports:
      - "15672:15672"
      - "15671:15671"
      - "5672:5672"
    volumes:
      - /rabbitmq/lib:/var/lib/rabbitmq
      - /rabbitmq/log:/var/log/rabbitmq
      - /rabbitmq/conf:/etc/rabbitmq/
Run Code Online (Sandbox Code Playgroud)

生成的rabbitmq.config:

[ { rabbit, [
        { loopback_users, [ ] },
        { tcp_listeners, [ 5672 ] },
        { ssl_listeners, [ ] },
        { hipe_compile, false }
] } ].
Run Code Online (Sandbox Code Playgroud)

我查看了管理映像的 Dockerfile,它似乎允许在文件中使用“rabbitmq-plugins启用rabbitmq_management”。我在浏览器上不断收到“连接已重置”消息。

我是 Docker 新手,不确定是什么导致了这个问题。

唯一让我感到惊讶的是rabbitmq.config中的内容;我没有看到其他端口的条目,包括 15672。虽然这个文件是由rabbitmq 添加的。此外,调用 docker-compose logs 命令不会显示任何指示已收到请求的条目。

解决方案

从 shell 运行此命令解决了问题: docker exec [CONTAINER_NAME] rabbitmq-plugins enable rabbitmq_management从此网站https://github.com/docker-library/rabbitmq/issues/45。我认为使用图像rabbitmq:management应该可以解决这个问题。

为什么运行rabbitmq:management图像不能解决这个问题?