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的两种方式。

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

相关推荐
稚辉君.MCA_P8_Java2 小时前
Gemini永久会员 containerd部署java项目 kubernetes集群
后端·spring cloud·云原生·容器·kubernetes
yihuiComeOn2 小时前
[源码系列:手写Spring] AOP第二节:JDK动态代理 - 当AOP遇见动态代理的浪漫邂逅
java·后端·spring
e***71673 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
程序猿小蒜3 小时前
基于springboot的的学生干部管理系统开发与设计
java·前端·spring boot·后端·spring
q***56384 小时前
Spring容器初始化扩展点:ApplicationContextInitializer
java·后端·spring
菜鸟‍4 小时前
【后端学习】MySQL数据库
数据库·后端·学习·mysql
Codebee5 小时前
30 分钟落地全栈交互:OneCode CLI+SVG 排课表实战
后端
TechTrek5 小时前
Spring Boot 4.0正式发布了
java·spring boot·后端·spring boot 4.0
飞梦工作室6 小时前
企业级 Spring Boot 邮件系统开发指南:从基础到高可用架构设计
java·spring boot·后端
haiyu柠檬6 小时前
在Spring Boot中实现Azure的SSO+VUE3前端配置
java·spring boot·后端