1. 程式人生 > >使用docker部署rocketmq時的坑

使用docker部署rocketmq時的坑

如果同時需要docker執行console需要注意一個問題
下面是官方文件中執行console的命令,裡面的JAVA_OPTS引數是不正確的,不知道是不是版本原因

docker run -e 
"JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876 
-Dcom.rocketmq.sendMessageWithVIPChannel=false" 
-p 8080:8080 -t styletang/rocketmq-console-ng

按照這個命令執行的話會報錯 connect to <null> failed, 如圖
這裡寫圖片描述

對比直接在伺服器上執行的命令,把其中java_opts改為如下

docker run -e 
"JAVA_OPTS=-Drocketmq.config.namesrvAddr=127.0.0.1:9876
-D" -p 8080:8080 -t styletang/rocketmq-console-ng

再次執行,沒有報錯。

下面是我啟動namesrv,broker,console用的docker-compose.yml

version: '2'
namesrv: 
    image: apache/incubator-rocketmq-namesrv:4.0.0-incubating
    net: "host"  # 涉及到一些特殊的服務,所以用的是host,正常情況建議不要使用host網路
    volumes:
     - /data/rocket/namesrv/opt/logs:/opt/logs # 保留日誌到宿主機
     - /data/rocket/namesrv/opt/store:/opt/store  
     - /etc/localtime:/etc/localtime:ro # 修改容器內的時區和宿主機一樣
    ports:
     - "9876:9876"

broker:
    image: apache/incubator-rocketmq-broker:4.0.0-incubating
    net: "host"
    environment:
      NAMESRV_ADDR: xx.xx.xx.xx:9876  # namesrv的地址
    volumes:
     - /data/rocket/broker/opt/logs:/opt/logs # 保留日誌
     - /data/rocket/broker/opt/store:/opt/store # 保留資料到宿主機
     - /etc/localtime:/etc/localtime:ro
    #links:
    # - namesrv:namesrv
    ports:
     - "10911:10911"
     - "10909:10909"

console:
    image: styletang/rocketmq-console-ng:latest
    net: "host"
    volumes:
     - /etc/localtime:/etc/localtime:ro
    ports:
     - "8080:8080"
    #links:
    # - namesrv:namesrv
    environment:
     JAVA_OPTS: -Drocketmq.config.namesrvAddr=xx.xx.xx.xx:9876