docker(二十四)docker部署RabbitMQ

docker插件部署继续,这里部署RabbitMQ集群。

还是老药方,两种配置方式,一种是使用docker-compose,一种是使用docker命令。

用那种都可以,我这里使用的四docker-compose

一:docker-compose

docker-compose.yml文件内容如下所示:

bash 复制代码
version: "3.8"
services:
  rabbitmq-one:
    container_name: rabbitmq-one                # 容器名称
    image: rabbitmq:3.13.1-management              # 容器镜像
    hostname: rabbitmq1                                      # 主机名称,这个后期配置集群的时候用到
    ports:                                                              #暴露端口
      - "5672:5672"
      - "15672:15672"
    environment:                                          
      - RABBITMQ_DEFAULT_USER=admin                  # 登录用户名
      - RABBITMQ_DEFAULT_PASS=camellia        # 密码
      - TZ=Asia/Shanghai
      # 设置集群密钥
      - RABBITMQ_ERLANG_COOKIE='rabbitMQcookie'
    mem_limit: 500m                               # 运行内存限制
    volumes:
      - /opt/docker/RabbitMQ/RabbitMQ-ONE/data:/var/lib/rabbitmq
      - /opt/docker/RabbitMQ/RabbitMQ-ONE/log:/var/log/rabbitmq/log
    restart: always                                                 # 重启策略
 
  rabbitmq-two:
    container_name: rabbitmq-two
    image: rabbitmq:3.13.1-management
    hostname: rabbitmq2
    depends_on:                                                 # 启动顺序
      - rabbitmq-one
    links:                                                         # 链接
      - rabbitmq-one
    ports:
      - "5673:5672"
      - "15673:15672"
    environment:
      - RABBITMQ_DEFAULT_USER=admin
      - RABBITMQ_DEFAULT_PASS=camellia
      - TZ=Asia/Shanghai
      # 设置集群密钥
      - RABBITMQ_ERLANG_COOKIE='rabbitMQcookie'
    mem_limit: 500m        
    volumes:
      - /opt/docker/RabbitMQ/RabbitMQ-TWO/data:/var/lib/rabbitmq
      - /opt/docker/RabbitMQ/RabbitMQ-TWO/log:/var/log/rabbitmq/log
    restart: always

创建容器:

复制代码
docker compose up -d

配置集群主机:

shell 复制代码
# docker exec -it rabbitmq-one /bin/bash
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl start_app
# exit

配置集群从机:

shell 复制代码
# docker exec -it rabbitmq-two /bin/bash
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl join_cluster --ram rabbit@rabbitmq1
# rabbitmqctl start_app
# exit

二:docker命令创建

1:创建一个dockerfile

ini 复制代码
# 使用官方的RabbitMQ镜像作为基础镜像
FROM rabbitmq:3.13.1-management
 
# 设置RabbitMQ配置
ENV RABBITMQ_DEFAULT_USER=rabbitmq
ENV RABBITMQ_DEFAULT_PASS=camellia
ENV TZ=Asia/Shanghai
# 设置集群密钥
ENV RABBITMQ_ERLANG_COOKIE='rabbitMQcookie'
   
# 暴露RabbitMQ端口
EXPOSE 5672 15672
 
# 启动RabbitMQ
CMD ["rabbitmq-server"]
 
# docker 构建容器命令  
# docker build -t my-rabbitmq .

2:创建rabbitmq主机

shell 复制代码
# docker run -d --hostname rabbit1 --name rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=rabbitmq -e RABBITMQ_DEFAULT_PASS=camellia -v /opt/docker/rabbitmq/data:/var/lib/rabbitmq -v /opt/docker/rabbitmq/log:/var/log/rabbitmq/log my-rabbitmq
# docker exec -it rabbitmq1 /bin/bash
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl start_app
# exit

3:创建rabbitmq从机1

shell 复制代码
# docker run -d --hostname rabbit2 --name rabbitmq2 -p 15673:15672 -p 5673:5672 -v /opt/docker/rabbitmq/data:/var/lib/rabbitmq -v /opt/docker/rabbitmq/log:/var/log/rabbitmq/log --link rabbitmq1:rabbit1 my-rabbitmq
# docker exec -it rabbitmq2 /bin/bash
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl join_cluster --ram rabbit@rabbit1
# rabbitmqctl start_app
# exit

3:创建rabbitmq从机2

shell 复制代码
# docker run -d --hostname rabbit3 --name rabbitmq3 -p 15674:15672 -p 5674:5672 -v /opt/docker/rabbitmq/data:/var/lib/rabbitmq -v /opt/docker/rabbitmq/log:/var/log/rabbitmq/log --link rabbitmq1:rabbit1 --link rabbitmq2:rabbit2 my-rabbitmq
# docker exec -it rabbitmq3 /bin/bash
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl join_cluster --ram rabbit@rabbit1
# rabbitmqctl start_app
# exit

上边的代码中有很多注释,是为了后边部署集群使用的。

我这里部署了三个RabbitMQ,主从复制了相当是。

注意:每次新建docker容器,都需要将绑定在本地的数据卷目录删除,否则会有问题。

以上大概就是docker部署rabbitmq的两种方式。

有好的建议,请在下方输入你的评论。

相关推荐
程序员爱钓鱼2 小时前
Python编程实战 · 基础入门篇 | 元组(tuple)
后端·python·ipython
程序员爱钓鱼2 小时前
Python编程实战 · 基础入门篇 | 列表(list)
后端·python·ipython
掘金码甲哥6 小时前
两张大图一次性讲清楚k8s调度器工作原理
后端
间彧6 小时前
Stream flatMap详解与应用实战
后端
间彧7 小时前
Java Stream流两大实战陷阱:并行流Parallel误用、List转Map时重复键异常
后端
tan180°8 小时前
Linux网络UDP(10)
linux·网络·后端·udp·1024程序员节
正经教主9 小时前
【Trae+AI】和Trae学习搭建App_03:后端API开发原理与实践(已了解相关知识的可跳过)
后端·express
shepherd1269 小时前
破局延时任务(上):为什么选择Spring Boot + DelayQueue来自研分布式延时队列组件?
java·spring boot·后端·1024程序员节
开心-开心急了9 小时前
Flask入门教程——李辉 第5章: 数据库 关键知识梳理
笔记·后端·python·flask·1024程序员节
雨夜之寂9 小时前
第一章-第三节-Java开发环境配置
java·后端