使用 Docker 部署 RocketMQ

安装 Docker 及 Docker Compose

Docker 的安装官网给了很详细的步骤,略过。

Docker Compose 需要另外安装,从 GitHub 搜索 Docker Compose,下载 linux x86 平台的二进制文件,放到 /usr/local/bin 目录下,再添加执行权限就能正常使用了。
使用 docker-compose --version 验证安装和查看版本。

拉取镜像

拉取镜像:

1
2
docker pull apache/rocketmq:5.3.2
docker pull apacherocketmq/rocketmq-dashboard:2.1.0

! 如遇网络问题可配置 /etc/docker/daemon.json 使用代理(2025年11月可用):

1
2
3
4
5
6
{
"registry-mirrors": [
"https://docker.xuanyuan.me"
],
"userland-proxy": false
}

配置完需要重启 Docker。

部署 namesrv 及 broker

使用 Docker Compose 安装 namesrv 及 broker。
新增 conf/broker.conf 文件:

1
2
# !! 千万不要写成 127.0.0.1,这个值指的是容器本身的地址,会导致后面部署 rocketmq-dashboard 提示无法连接到 broker
brokerIP1=rocketmq-broker

docker-compose 配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
version: '3.8'
services:
namesrv:
image: apache/rocketmq:5.3.2
container_name: rocketmq-namesrv
ports:
- "25060:9876"
environment:
JAVA_OPT_EXT: "-server -Xms512m -Xmx512m -Xmn128m"
command: sh mqnamesrv
networks:
- rocketmq

broker:
image: apache/rocketmq:5.3.2
container_name: rocketmq-broker
ports:
- "25062:10909"
- "25063:10911"
- "25064:10913"
- "25065:8081"
environment:
NAMESRV_ADDR: "rocketmq-namesrv:9876"
JAVA_OPT_EXT: "-server -Xms512m -Xmx512m -Xmn128m"
volumes:
- Applications/docker_app_config/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-5.3.2/conf/broker.conf
depends_on:
- namesrv
command: sh mqbroker -n rocketmq-namesrv:9876 -c /home/rocketmq/rocketmq-5.3.2/conf/broker.conf
networks:
- rocketmq

networks:
rocketmq:
driver: bridge
external: true

在 docker-compose.yml 文件所在路径下执行 docker-compose up -d 启动 namesrv 和 broker。

安装 rocketmq-dashboard

启动 rocketmq-dashboard 容器:

1
2
3
4
5
6
docker run -d \
--name rocketmq-dashboard \
--network rocketmq \
-p 25061:8082 \
-e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=rocketmq-namesrv:9876" \
apacherocketmq/rocketmq-dashboard:2.1.0

! 如果配置了防火墙需放行映射的宿主机端口。

访问 http://host:25061 打开 dashboard 首页。

问题记录

部署 dashboard 之后打开首页提示:

1
org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to 127.0.0.1:10909 failed

以为是端口映射的问题,下载了源码下来查看,没有找到 10909 这个端口相关的代码。后面问了 AI,发现是 conf/broker.conf 文件中配置有问题:

1
brokerIP1: 127.0.0.1

将此配置改为 broker 容器的名称,再重启 broker,刷新 dashboard 就正常展示数据了。