- 拉取 RocketMQ 镜像:
首先,从 Docker Hub 获取最新的 RocketMQ 镜像:
docker pull apache/rocketmq:latest
-
创建 Docker 网络:
为了使各容器之间能够通信,创建一个名为rocketmq
的网络:docker network create rocketmq
-
启动 NameServer:
NameServer 是 RocketMQ 的核心组件之一,负责管理路由信息。使用以下命令启动:docker run -d --name rmqnamesrv --network rocketmq -p 9876:9876 apache/rocketmq:latest sh mqnamesrv
-
配置 Broker:
为了设置账户密码,需要在 Broker 的配置文件中启用 ACL(访问控制列表)。首先,在主机上创建一个目录来存放配置文件:mkdir -p /home/rocketmq/broker/conf
然后,在该目录下创建
broker.conf
文件,内容如下:brokerClusterName=DefaultCluster brokerName=broker-a brokerId=0 namesrvAddr=rmqnamesrv:9876 autoCreateTopicEnable=false autoCreateSubscriptionGroup=false aclEnable=true
请注意,
aclEnable=true
用于启用 ACL 功能。 -
配置 ACL:
在同一目录下创建plain_acl.yml
文件,定义用户的访问权限:accounts:- accessKey: adminsecretKey: 123456whiteRemoteAddress: 192.168.0.*admin: truedefaultTopicPerm: DENYdefaultGroupPerm: DENY
上述配置创建了一个用户名为
admin
,密码为123456
的管理员账户,且仅允许来自192.168.0.*
网段的访问。 -
启动 Broker:
使用以下命令启动 Broker,并挂载配置文件:docker run -d --name rmqbroker --network rocketmq -p 10911:10911 -p 10909:10909 -v /home/rocketmq/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.0/conf/broker.conf -v /home/rocketmq/broker/conf/plain_acl.yml:/home/rocketmq/rocketmq-4.9.0/conf/plain_acl.yml -e "NAMESRV_ADDR=rmqnamesrv:9876" apache/rocketmq:latest sh mqbroker -c /home/rocketmq/rocketmq-4.9.0/conf/broker.conf
-
部署 RocketMQ 控制台(可选):
为了方便管理和监控,您可以部署 RocketMQ 控制台。首先,拉取控制台镜像:docker pull apacherocketmq/rocketmq-dashboard:latest
然后,启动控制台容器:
docker run -d --name rmq-dashboard --network rocketmq -p 8080:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Drocketmq.config.loginRequired=true -Drocketmq.config.accessKey=admin -Drocketmq.config.secretKey=123456" apacherocketmq/rocketmq-dashboard:latest
此时,可以通过浏览器访问
http://<主机IP>:8080
,使用配置的账户密码登录控制台。