docker-compose配置rocketmq5.1.4
在学习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文件配置被加载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?