0%

docker下安装rocketMQ

docker下安装rocketMQ

安装NameServer

  • 拉取镜像并启动(以挂载配置文件等到宿主机的形式启动)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    废弃:
    docker run -d -p 9876:9876 \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-namesrv/logs:/root/logs \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-namesrv/store:/root/store \
    --name rmqserver foxiswho/rocketmq:server-4.5.1


    改(20211221):
    docker run -d -p 9876:9876 \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-namesrv/logs:/opt/logs \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-namesrv/store:/opt/store \
    --name rmqserver4.5.1 foxiswho/rocketmq:server-4.5.1

安装broker

  • 拉取镜像并启动(以挂载配置文件等到宿主机的形式启动)

    注:首先要在宿主机路径下创建好broker.conf文件

    路径:/Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/conf/

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    废弃:
    docker run -d -p 10911:10911 -p 10909:10909 \
    --name rmqbroker \
    --link rmqserver:namesrv \
    -e "NAMESRV_ADDR=namesrv:9876" \
    -e "JAVA_OPTS=-Duser.home=/opt" \
    -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m" \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/conf/broker.conf:/etc/rocketmq/broker.conf \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/logs:/root/logs \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/store:/root/store \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/store:/opt/store \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/conf/broker.conf:/opt/rocketmq-4.5.1/conf/broker.conf \
    foxiswho/rocketmq:broker-4.5.1


    改(20211221):
    docker run -d -p 10911:10911 -p 10909:10909 \
    --name rmqbroker4.5.1 \
    --link rmqserver4.5.1:namesrv \
    -e "NAMESRV_ADDR=namesrv:9876" \
    -e "JAVA_OPTS=-Duser.home=/opt" \
    -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m" \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/logs:/opt/logs \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/store:/opt/store \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/conf/broker.conf:/etc/rocketmq/broker.conf \
    -v /Users/ux/Applications/docker/rocketmq4.5/rocketmq-broker/conf/broker.conf:/opt/rocketmq-4.5.1/conf/broker.conf \
    foxiswho/rocketmq:broker-4.5.1

rocketmq console 可视化控制台

  • 拉取镜像(可缺省步骤):

    1
    docker pull styletang/rocketmq-console-ng
  • 运行容器:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    废弃:
    docker run -d --name rmqconsole -p 8180:8080 \
    --link rmqserver:namesrv \
    -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 \
    -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
    -t apacherocketmq/rocketmq-console:2.0.0


    改(20211221):
    docker run -d --name rmqconsole2_4.5.1 -p 8180:8080 \
    --link rmqserver4.5.1:namesrv \
    -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 \
    -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
    -t apacherocketmq/rocketmq-console:2.0.0
  • 运行容器(其他镜像源):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ##其他镜像源
    -t styletang/rocketmq-console-ng

    ##没什么卵用 --link rmqbroker:rmqbroker \
    docker run -d --name rmqconsole -p 8180:8080 \
    --link rmqserver:namesrv \
    --link rmqbroker:rmqbroker \
    -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 \
    -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
    -t apacherocketmq/rocketmq-console:2.0.0

当NameServer和broker、console都分别以docker容器运行的时候,需要增加broker.conf配置

  • brokerIP1和namesrvAddr配置【直接拷贝,替换ip即可】

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    # 配置为brokerIP1=127.0.0.1,如果namesrv,broker和console都安装在docker,会造成console访问不到namesrv
    # brokerIP1=127.0.0.1
    # brokerIP1=192.168.2.1
    # brokerIP1=192.168.31.94

    # 注释掉,mq会正常,【可能】自动创建topic会失效,即namesrv和broker通信失败,【实测后发现不配置也正常自动创建】
    # namesrvAddr=127.0.0.1:9876
    # namesrvAddr=192.168.2.1:9876
    # namesrvAddr=192.168.31.94:9876

    # ---------------------------------说明----------------------------------------------------
    # 注意:

    # 如果不配置brokerIP1,则会使用docker内部分配的ip,即172.17.0.3这种,外部系统调用mq服务,是调用不到的;
    # 如果配置brokerIP1=127.0.0.1,如果外部系统调用mq服务,也是调用不到的。

    # 如果不配置namesrvAddr,诸如autoCreateTopicEnable配置为true时,可能不#会生效的。
    # 如果namesrvAddr配置为:namesrvAddr=127.0.0.1:9876,则在console里是看不到namesrv服务的。

    # ---------------------------------broker启动日志,观察连接的namesrv---------------------------
    # broker启动日志:
    # The broker[6c357964d9e9, 192.168.2.1:10911] boot success. serializeType=JSON and name # # server is 192.168.2.1:9876
    # The broker[6c357964d9e9, 192.168.2.1:10911] boot success. serializeType=JSON and name # # server is 127.0.0.1:9876
    # The broker[6c357964d9e9, 192.168.2.1:10911] boot success. serializeType=JSON and name # # server is namesrv:9876

    # ---------------------------------以docker的通信隔离为基础去思考即可---------------------------


    # ---------------------------------docker中原始broker.conf begin--------------------------
    # sh-4.2# cat /etc/rocketmq/broker.conf
    # Licensed to the Apache Software Foundation (ASF) under one or more
    # contributor license agreements. See the NOTICE file distributed with
    # this work for additional information regarding copyright ownership.
    # The ASF licenses this file to You under the Apache License, Version 2.0
    # (the "License"); you may not use this file except in compliance with
    # the License. You may obtain a copy of the License at
    #
    # http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.


    ## brokerClusterName = DefaultCluster
    ## brokerName = broker-a
    ## brokerId = 0
    ## deleteWhen = 04
    ## fileReservedTime = 48
    ## brokerRole = ASYNC_MASTER
    ## flushDiskType = ASYNC_FLUSH

    # ---------------------------------docker中原始broker.conf end--------------------------

    brokerClusterName = DefaultCluster
    brokerName = broker-MAC
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH

    # ---------------------------------docker中原始broker.conf--------------------------
    ## 新增配置
    brokerIP1=192.168.31.94
    namesrvAddr=192.168.31.94:9876