之前看到 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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐