docker - Rabbitmq 不以 docker-compose 开头
问题描述
我面临下一个问题。我想在 docker 容器中运行 rabbitmq。当我使用下一个命令运行 docker image 时:
docker run -it --rm --name rabbit -e RABBITMQ_DEFAULT_USER=aaa -e RABBITMQ_DEFAULT_PASS=aaa -p 5672:5672 -p 15672:15672 rabbitmq:3-management
它工作得很好。但我无法在 docker-compose 中运行它。有我的docker-compose.yml
:
version: "3"
services:
rabbitmq3:
image: rabbitmq:3-management
container_name: rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=aaa
- RABBITMQ_DEFAULT_PASS=aaa
ports:
- 15672:15672
- 5672:5672
我使用docker-compose up --build
命令。日志没问题,但我无法在localhost:15672
.
版本是:
docker-compose version 1.24.0, build 0aa59064
Docker version 19.03.5, build 633a0ea838
编辑
我认为,日志很好,但我不确定。请在这里查看
解决方案
很抱歉一年后把这个问题提高了,但我刚刚遇到了同样的问题,所以我希望它对某人有所帮助:)
TL;DR 使用rabbitmq:3-management-alpine图像而不是 rabbitmq:3-management为我解决了这个问题。
这是我的 docker-compose.yml:
version: "3.9"
services:
my-rabbit:
image: rabbitmq:3-management-alpine
container_name: my-rabbit
hostname: my-rabbit-host
ports:
- "15672:15672"
- "5672:5672"
volumes:
- "./rabbitdata:/var/lib/rabbitmq"
运行docker compose --detach
管理插件界面后,代理本身在 http://localhost:15672 可用(代理为 tcp localhost:5672)
漫长的故事
在 docker-compose.yml 中使用rabbitmq:3-management镜像会在 docker 日志中产生以下输出:
输出在最后一行之后停止
01 19:20:07.852760+00:00 [noti] <0.299.0> WAL: ra_log_wal init, open tbls: ra_log_open_mem_tables, closed tbls: ra_log_closed_mem_tables
经纪人和管理插件都不可用。
但是,在运行以下命令后(使用与 docker-compose.yml 中相同的参数)
docker run -d --hostname my-rabbit-host -p 15672:15672 -p 5672:5672 --name my-rabbit -v rabbitdata:/var/lib/rabbitmq rabbitmq:3-management
日志实际上看起来完全不同:
人们可能会注意到,服务器实际上已经启动,之后代理和管理 UI 都可以访问了!
现在,如果我们将 docker-compose.yml 中的图像从rabbitmq:3-management更改为rabbitmq:3-management-alpine(参见 TL;DR 示例)并运行docker compose up --detach
,日志输出看起来很像使用docker run ... rabbitmq:3-management
, 并且,再一次,代理接口和管理插件接口在本地主机上都可以正常工作,分别使用端口 5672 和 15672。
推荐阅读
- javascript - 使用 js-cookie 和 JSON.parse 从 cookie 中设置和获取数组
- java - 具有特定 ID 的模拟子演员 Akka Java
- node.js - 如何获取 appium-chromedriver 版本
- python - 根据特定条件删除 numpy 数组的行
- javascript - React 不会从 url 加载图像
- java - 无法从 TemporalAccessor 获取 ZoneOffset:{},ISO,Europe/Berlin 解析为 java.time.format.Parsed 类型的 2019-12-26
- python - 如何将 Select * Postgres/Redshift 查询结果放入字典(列/值)
- python - pandas.to_sql 写入零而不是整数/浮点值
- java - 与 mySQL RDS 实例的 JDBC 连接
- sql - 案例表达式中的案例表达式