rocketmq docker

#>>>>>>>>>>rocketmq<<=======================================
1.拉取RocketMQ镜像
这里以dockerhub上 RocketMQ 5.2.0 版本的镜像为例,介绍部署过程。

docker pull d.vimll.com:9888/root/public/rocketmq:5.2.0

2.创建容器共享网络
RocketMQ 中有多个服务,需要创建多个容器,创建 docker 网络便于容器间相互通信。

docker network create rocketmq

3.启动NameServer
# 启动 NameServer
docker run -d --name rmqnamesrv -p 9876:9876 --network rocketmq d.vimll.com:9888/root/public/rocketmq:5.2.0 sh mqnamesrv

# 验证 NameServer 是否启动成功
docker logs -f rmqnamesrv

信息
我们可以看到 'The Name Server boot success..', 表示NameServer 已成功启动。

4.启动 Broker+Proxy
NameServer 成功启动后,我们启动 Broker 和 Proxy。

Linux
Windows
# 配置 Broker 的IP地址
cat broker.conf
brokerIP1=172.16.100.39
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
aclEnable=true
enablePropertyFilter=true

# cat plain_acl.yml
globalWhiteRemoteAddresses:
  - 10.10.103.*
  - 192.168.0.*
  - 172.16.0.*

accounts:
  - accessKey: jtkj_mq
    secretKey: xxxxxxxxxxxx
    whiteRemoteAddress:
    admin: false
    defaultTopicPerm: PUB|SUB
    defaultGroupPerm: PUB|SUB
    topicPerms:
      - topicA=DENY
      - topicB=PUB|SUB
      - topicC=SUB
    groupPerms:
      # the group should convert to retry topic
      - groupA=DENY
      - groupB=PUB|SUB
      - groupC=SUB

  - accessKey: adminmq
    secretKey: xxxxxxxxxxx
    whiteRemoteAddress:
    # if it is admin, it could access all resources
    admin: true

mkdir /ssd2/rocketmqstore
chmod 777 /ssd2/rocketmqstore

# 启动 Broker 和 Proxy
docker run -d \
--name rmqbroker \
--network rocketmq \
--privileged=true \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-p 8080:8080 -p 8081:8081 \
-e "NAMESRV_ADDR=172.16.100.39:9876" \
-v /ssd2/rocketmqstore:/home/rocketmq/store \
-v ./broker.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf \
-v ./plain_acl.yml:/home/rocketmq/rocketmq-5.2.0/conf/plain_acl.yml \
d.vimll.com:9888/root/public/rocketmq:5.2.0 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.2.0/conf/broker.conf

# 验证 Broker 是否启动成功
docker exec -it rmqbroker bash -c "tail -n 10 /home/rocketmq/logs/rocketmqlogs/proxy.log"

我们可以看到 'The broker boot success..', 表示 Broker 已成功启动。

docker pull d.vimll.com:9888/root/public/rocketmq-dashboard:latest

docker run -d --name rocketmq-dashboard --privileged=true  --network rocketmq  -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.100.39:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.accessKey=adminmq -Drocketmq.config.secretKey=xxxxxx" -v /root/jintdev-k8s/rocketmq-operator/docker/data:/tmp/rocketmq-console/data -p 8088:8080 -t d.vimll.com:9888/root/public/rocketmq-dashboard:latest

-Drocketmq.config.loginRequired=true

cat docker-compose.yml
version: '3.8'
services:
  namesrv:
    image: apache/rocketmq:5.2.0
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    networks:
      - rocketmq
    command: sh mqnamesrv
  broker:
    image: apache/rocketmq:5.2.0
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
    depends_on:
      - namesrv
    networks:
      - rocketmq
    command: sh mqbroker
  proxy:
    image: apache/rocketmq:5.2.0
    container_name: rmqproxy
    networks:
      - rocketmq
    depends_on:
      - broker
      - namesrv
    ports:
      - 8080:8080
      - 8081:8081
    restart: on-failure
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
    command: sh mqproxy
networks:
  rocketmq:
    driver: bridge