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

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

相关推荐
短剑重铸之日17 小时前
《SpringBoot4.0初识》第一篇:前瞻与思想
java·开发语言·后端·spring·springboot4.0
it_czz18 小时前
LangSmith vs LangFlow vs LangGraph Studio 可视化配置方案对比
后端
蓝色王者18 小时前
springboot 2.6.13 整合flowable6.8.1
java·spring boot·后端
花哥码天下18 小时前
apifox登录后设置token到环境变量
java·后端
hashiqimiya19 小时前
springboot事务触发滚动与不滚蛋
java·spring boot·后端
TeamDev20 小时前
基于 Angular UI 的 C# 桌面应用
前端·后端·angular.js
PPPHUANG20 小时前
一次 CompletableFuture 误用,如何耗尽 IO 线程池并拖垮整个系统
java·后端·代码规范
用户83562907805120 小时前
用Python轻松管理Word页脚:批量处理与多节文档技巧
后端·python
想用offer打牌21 小时前
一站式了解Spring AI Alibaba的流式输出
java·人工智能·后端
秋说21 小时前
华为 DevKit 25.2.rc1 源码迁移分析使用教程(openEuler + ARM64)
后端