Docker Desktop搭建RocketMQ圖文教程
1. 準備工作
- 已安裝Docker Desktop(本地安裝方法參考上一節教程)。
- 需部署三個組件:NameServer、Broker、Console(管理界面)。
2. 創建目錄和文件
- 在任意盤(如D盤)創建以下目錄結構:
D:\rocketmq-docker ├── docker-compose.yml ├── conf/ │ └── broker.conf ├── logs/ └── store/
3. 編寫docker-compose.yml
version: '3.5'
services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports:- 9876:9876volumes:- ./logs:/opt/logs- ./store:/opt/storenetworks:rmq:aliases:- rmqnamesrvrmqbroker:image: foxiswho/rocketmq:brokercontainer_name: rmqbrokerports:- 10909:10909- 10911:10911volumes:- ./logs:/opt/logs- ./store:/opt/store- ./conf/broker.conf:/etc/rocketmq/broker.confenvironment:NAMESRV_ADDR: "rmqnamesrv:9876"JAVA_OPTS: " -Duser.home=/opt"JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"command: mqbroker -c /etc/rocketmq/broker.confdepends_on:- rmqnamesrvnetworks:rmq:aliases:- rmqbrokerrmqconsole:image: styletang/rocketmq-console-ngcontainer_name: rmqconsoleports:- 8090:8080 # 管理界面端口可自定義environment:JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"depends_on:- rmqnamesrvnetworks:rmq:aliases:- rmqconsolenetworks:rmq:name: rmqdriver: bridge
4. 配置broker.conf
在conf/broker.conf
中寫入以下內容(關鍵修改項已標粗):
# 集群名稱
brokerClusterName=DefaultCluster
# Broker名稱(Master/Slave需不同)
brokerName=broker-a
# 0表示Master
brokerId=0
# 宿主機IP(必須修改!)
brokerIP1=你的本機IP # 或通過hosts映射域名(如www.xiong.com)
# 自動創建Topic(線上建議關閉)
autoCreateTopicEnable=true
# 自動創建訂閱組
autoCreateSubscriptionGroup=true
# 監聽端口
listenPort=10911
# 刷盤方式(ASYNC_FLUSH或SYNC_FLUSH)
flushDiskType=ASYNC_FLUSH
5. 啟動RocketMQ
- 在
docker-compose.yml
所在目錄執行:docker-compose up -d
- 檢查容器是否正常運行(通過Docker Desktop或
docker ps
)。
6. 訪問管理界面
- 瀏覽器打開:
http://localhost:8090
(或自定義的端口)。 - 若配置了域名(如
www.xiong.com
),則訪問:http://www.xiong.com:8090
。
7. 注意事項
- IP問題:
brokerIP1
必須設置為宿主機IP,否則生產者/消費者可能無法連接。 - 資源限制:默認JVM內存為128MB,可根據需求調整
JAVA_OPT_EXT
參數。 - 數據持久化:
logs
和store
目錄用于持久化數據,避免容器重啟丟失。
常見問題
- 連接失敗:檢查
brokerIP1
是否配置正確,或嘗試在代碼中禁用VIP通道:producer.setVipChannelEnabled(false);
- 端口沖突:修改
docker-compose.yml
中的端口映射(如9876、10911、8090)。
按此步驟即可完成RocketMQ的Docker部署!