在学习roketmq期间,先自己搭建一套rocketmq的运行环境至关重要!
因此就有了以下这篇博客
先安装docker和docker-compose,这里认为你已经会了
根据需要,先创建一个网络
docker network create rockermq
编写docker-compose.yml文件
version: "3" networks: default: # 网络 name: rockermq external: true volumes: # 具名挂载数据卷:nameserver配置文件 namesrv_conf: # 具名挂载数据卷:broker配置文件 broker_conf: services: #Service for nameserver namesrv: container_name: RocketMQ-namesrv # 使用apache的镜像(这个镜像实际上没有做太多优化,直接jdk8+rocketmq5.1.4) image: apache/rocketmq:5.1.4 # 启动命令 command: sh mqnamesrv # 容器自动重启 restart: always # 端口暴露 ports: # 默认端口9876 - 9876:9876 environment: # 按照jdk8方式配置内存大小,看自己需求,这里只是为了学习如何使用rocketmq,因此配置的内存小了一下,不过够用了 - JAVA_OPT_EXT=-Xms512m -Xmx2048m volumes: # 使用具名挂在方式,将rocketmq的nameserver配置挂载出来 - namesrv_conf:/home/rocketmq/rocketmq-5.1.4/conf #Service for broker # 部署一个broker即可,学习阶段,先跑起来,后期可以搭建HA环境 broker: container_name: RocketMQ-broker depends_on: # 保证先启动了nameserver后,再启动broker - namesrv image: apache/rocketmq:5.1.4 # 这里需要指定broker.conf文件,目的是配置ip,由于我们使用docker容器技术,broker向nameserver注册的时候,使用了容器中的内网ip,这个是访问不到的,因此,需要配置成自己的公网ip command: sh mqbroker -n namesrv:9876 -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf restart: always ports: - 10909:10909 # 用于通信的 Broker 端口,这个最重要 - 10911:10911 - 10912:10912 environment: # 注册到的nameserver地址 - NAMESRV_ADDR=namesrv:9876 # 按照jdk8方式配置内存大小 - JAVA_OPT_EXT=-Xms512m -Xmx2048m volumes: # 将broker的配置文件挂载出来 - broker_conf:/home/rocketmq/rocketmq-5.1.4/conf # 图形化界面 dashboard: image: apacherocketmq/rocketmq-dashboard:latest container_name: RocketMQ-dashboard ports: # 访问端口 - 8080:8080 environment: - JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 depends_on: # 保证broker先启动起来 - broker
接下来,找到broker具名挂载出来的broker.conf文件,添加公网ip,这样,我们访问docker容器中的nameserver,nameserver给我们返回的broker ip才会是公网ip
# 添加一行 brokerIP1=<公网ip>
重启容器,保证broker.conf文件配置被加载
标签:compose,broker,conf,namesrv,docker,rocketmq5.1,nameserver,rocketmq From: https://www.cnblogs.com/wancker/p/18102754