之前看到 DockerHub 上有大佬制作了 m1 芯片, aarch64架构的 rocketmq 镜像, 所以就尝试的安装了下, 亲测可用:
一. docker-compose.yml 文件命令
volumes 挂载目录需要换成自己的目录
注意 depends_on 标签, broker 和 console 的 启动要晚于 namesrv, 因为 broker 需要注册到 namesrv
version: "3.0"
services:namesrv:image: candice0630/rocketmq:5.0.0-alpinecontainer_name: rocketmqNameServervolumes:- /Users/canxiusi/Documents/docker/rocketmq/nameServer/logs:/home/rocketmq/logs/rocketmqlogs- /Users/canxiusi/Documents/docker/rocketmq/broker/conf/broker.conf:/home/rocketmq/rocketmq-5.0.0/conf/broker.confenvironment:- MEM_XMS=500m- MEM_XMX=500m- MEM_XMN=256mcommand:sh mqnamesrvports:- "9876:9876"rocketmqBroker:image: candice0630/rocketmq:5.0.0-alpinecontainer_name: rocketmqBrokervolumes:- /Users/canxiusi/Documents/docker/rocketmq/broker/logs:/home/rocketmq/logs/rocketmqlogs- /Users/canxiusi/Documents/docker/rocketmq/broker/store:/home/rocketmq/store- /Users/canxiusi/Documents/docker/rocketmq/broker/conf/broker.conf:/home/rocketmq/rocketmq-5.0.0/conf/broker.confdepends_on:- namesrvenvironment:- MEM_XMS=500m- MEM_XMX=500m- MEM_XMN=256m- NAMESRV_ADDR:namesrv:9876- BROKER_ID=0- BROKER_ROLE=ASYNC_MASTER- FLUSH_DISK_TYPE=SYNC_FLUSHcommand:sh mqbroker -n namesrv:9876 -c /home/rocketmq/rocketmq-5.0.0/conf/broker.confports:- "10909:10909"- "10911:10911"- "10912:10912"rocketmqConsole:image: candice0630/rocketmq-console-ng:2.0container_name: rocketmqConsoledepends_on:- namesrvenvironment:JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrv:9876 -Drocketmq.config.isVIPChannel=false -Dcom.rocketmq.sendMessageWithVIPChannel=false"ports:- 19876:8080
二. 容器运行情况
之后可以使用 docker ps | grep rocketmq 查看容器运行情况
然后使用 http://localhost:19876/#/ 可以登录到 rocketmq 运维控制台, 可以看到 broker, topic, 等信息
之后我们使用 docker network ls, 以及 docker inspect + network id 命令可以查看到 rocketmq 的网络组, 可以看到网络模式 Driver 是 bridge 桥接, 以及下面的3个rocketmq容器所在的ip
如果你想修改默认网关和网络模式, 可以在 docker-compose 文件中编写 network 标签
三. 容器网络
我们可以使用 docker compose exec rocketmqConsole /bin/bash 该命令进入到一个正在运行的容器内部, 现在我们进入到 rocketmq 运维控制台这个容器中, 使用 ping 命令测试网络情况
可以发现, 在同一个网络组下面的容器, 可以直接使用 ping + 容器名的方式测试网络互联情况
ping rocketmqBroker, 会自动识别到 172.18.0.4 这个ip
同样的, 如果使用 docker compose exec rocketmqBroke /bin/bash 进入到 broker 这个容器中, 也可以 ping 通 rocketmqConsole