之前看到 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-alpine
container_name: rocketmqNameServer
volumes:
- /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.conf
environment:
- MEM_XMS=500m
- MEM_XMX=500m
- MEM_XMN=256m
command:
sh mqnamesrv
ports:
- "9876:9876"
rocketmqBroker:
image: candice0630/rocketmq:5.0.0-alpine
container_name: rocketmqBroker
volumes:
- /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.conf
depends_on:
- namesrv
environment:
- MEM_XMS=500m
- MEM_XMX=500m
- MEM_XMN=256m
- NAMESRV_ADDR:namesrv:9876
- BROKER_ID=0
- BROKER_ROLE=ASYNC_MASTER
- FLUSH_DISK_TYPE=SYNC_FLUSH
command:
sh mqbroker -n namesrv:9876 -c /home/rocketmq/rocketmq-5.0.0/conf/broker.conf
ports:
- "10909:10909"
- "10911:10911"
- "10912:10912"
rocketmqConsole:
image: candice0630/rocketmq-console-ng:2.0
container_name: rocketmqConsole
depends_on:
- namesrv
environment:
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