我面临下一个问题。我想在 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
.打开rabbitmq
版本是:
docker-compose version 1.24.0, build 0aa59064
Docker version 19.03.5, build 633a0ea838
我很抱歉一年后把这个问题搞砸了,但我刚刚遇到了同样的问题,所以我希望它能帮助别人 :)
TL;博士 使用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)
说来话长
使用 rabbitmq:3-management 图像和 docker-compose.yml 在 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 工作得很好。
请稍等一会儿 rabbitmq 需要时间来启动试试这个对我有用
version: "3"
services:
rabbitmq:
image: rabbitmq:3-management
command: rabbitmq-server
expose:
- 5672
- 15672
healthcheck:
test: [ "CMD", "nc", "-z", "localhost", "5672" ]
interval: 5s
timeout: 15s
retries: 1
worker:
image: worker
restart: on-failure
depends_on:
- rabbitmq
使用 docker-compose.yml 运行 RabbitMQ 非常简单
docker-compose.yml
version: '2'
services:
rabbit:
image: rabbitmq:3.7.2-management
environment:
RABBITMQ_DEFAULT_VHOST: rabbitmq-host
ports:
- 5672:5672
- 15672:15672
您可以简单地使用命令启动 docker compose 文件
docker-compose up
等待 30 秒,然后在浏览器中点击 http://localhost:15672/。您可以使用 guest 作为默认用户名和密码。您可以在下面的 GitHub
中找到示例 Spring Boot RabbitMQ 示例