首页 > 其他分享 >docker运行rabbitmq,mq用户以及vhost的持久化方法

docker运行rabbitmq,mq用户以及vhost的持久化方法

时间:2024-11-16 22:29:30浏览次数:1  
标签:compose plugins rabbitmq vhost rabbitmqctl mq learn docker

一、编写dockerfile文件,配置需要的插件

vim package/dockerfile-rabbitmq.yaml
FROM rabbitmq:3.8.5
WORKDIR /var/lib/rabbitmq
COPY rabbitmq_delayed_message_exchange-3.8.0.ez /opt/rabbitmq/plugins/
RUN chown rabbitmq:rabbitmq /opt/rabbitmq/plugins/rabbitmq_delayed_message_exchange-3.8.0.ez
RUN chmod 644 /opt/rabbitmq/plugins/rabbitmq_delayed_message_exchange-3.8.0.ez
RUN rabbitmq-plugins enable --offline rabbitmq_delayed_message_exchange
RUN rabbitmq-plugins enable --offline rabbitmq_management
RUN rabbitmq-plugins enable --offline rabbitmq_web_stomp
RUN rabbitmq-plugins enable --offline rabbitmq_web_mqtt

二、编写docker-compose文件,设置需要持久化的目录

vim docker-compose-rabbitmq.yaml 
version: "3.3"

networks:
  default:
    external: true
    name: learn-network

services:
  learn-rabbitmq:
    image: learn/rabbitmq:3.8.5
    hostname: rabbitmq
    container_name: learn-rabbitmq
    restart: always
    ports:
      - "6672:6672"
      - "15672:15672"
      - "25672:25672"
      - "15674:15674"
      - "15675:15675"
      - "1883:1883"
      - "61613:61613"
    volumes:
      #- /etc/hosts:/etc/hosts
      - /etc/localtime:/etc/localtime
      - ./config/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
      - ./data/rabbitmq:/var/lib/rabbitmq

这里的hostname用于配置容器主机名,这样才能保证每次容器启动时主机名一致,持久化的mq配置数据库目录是同一个,才能保证数据的持久化

三、docker-compose 启动容器

docker-compose -f docker-compose-rabbitmq.yaml up -d

四、进入容器进行用户和vhost的相关配置

docker exec -it learn-rabbitmq /bin/bash
rabbitmqctl add_user hlmq xxxxxxx
rabbitmqctl set_user_tags hlmq administrator 
rabbitmqctl set_permissions -p / hlmq '.*' '.*' '.*'
rabbitmqctl add_vhost im
rabbitmqctl set_permissions -p im hlmq '.*' '.*' '.*'

配置完后,所有的数据都持久化到宿主机对应的目录下了

五、停止删除容器,并重新启动进入容器验证

docker stop learn-rabbitmq && docker rm -f learn-rabbitmq
docker-compose -f docker-compose-rabbitmq.yaml up -d
docker exec -it learn-rabbitmq /bin/bash

root@rabbitmq:~# rabbitmqctl list_users
Listing users ...
user tags
hlmq [administrator]
guest [administrator]

 

标签:compose,plugins,rabbitmq,vhost,rabbitmqctl,mq,learn,docker
From: https://www.cnblogs.com/sky-cheng/p/18550001

相关文章

  • NOIP集训 P4137 Rmq Problem / mex 题解
    前置指使:可持久化线段树题解:P4137RmqProblem/mex有一个长度为\(n\)的数组\(\{a_1,a_2,...,a_n\}\)。\(m\)次询问,每次询问一个区间内最小没有出现过的自然数。Input第一行,两个正整数\(n,m\)。第二行,\(n\)个非负整数\(a_1,a_2,...,a_n\)。接下来\(m\)行,每......
  • RocketMQ负载均衡-消费者的负载均衡-统一哈希算法
    RocketMQ消费者的负载均衡-一致性哈希算法简介在分布式系统中,负载均衡是确保系统高效、可靠运行的关键。RocketMQ作为一款高性能的分布式消息中间件,通过多种负载均衡策略,实现消息队列在多个消费者之间的合理分配。其中,一致性哈希算法(ConsistentHashing)是一种先进的负......
  • RabbitMQ 五种模式
    RabbitMQ是一种常用的消息队列服务,它提供了五种消息模型:简单模型、工作队列模型、发布/订阅模型、路由模型、主题模型。1.简单模型(SimpleMessageQueue,简称SQS):一个生产者,一个消费者,一个队列。2.工作队列模型(WorkQueue):多个消费者共同处理一个队列中的任务,可以扩展进程数处理更......
  • springBoot-RabbitMQ 高级特性(保姆级教程,一步一步带你熟悉RabbitMQ 相关高级特性)
    话不多说,看项目整体架构RabbitMQ高级特性保姆级教程好了,下面县开始贴生产者代码:publisher父依赖:<parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.7.18</versi......
  • RabbitMQ文档
    说明本文基于Centos7系统测试RabbitMQ版本为3.2.*本文所有操作均使用root用户官方软件下载地址erlang:https://github.com/rabbitmq/erlang-rpm/releasesrabbitmq:https://www.rabbitmq.com/install-rpm.html#downloads安装1.将本站点上的erlang和rabbitmq安装包传......
  • RabbitMQ 全面解析:语法与其他消息中间件的对比分析
    1.引言在分布式系统和微服务架构中,消息中间件扮演着重要的角色。它们能够解耦服务、平衡负载、提高系统的可扩展性和可靠性。RabbitMQ是其中广受欢迎的一种。本文将从RabbitMQ的基础概念、语法介绍、以及与其他消息中间件的对比角度,全面剖析其在实际项目中的应用及优劣......
  • RabbitMQ 在 Java 和 Spring Boot 中的应用详解
    1.引言RabbitMQ是一种开源消息代理软件,广泛用于实现消息传递、队列管理和负载均衡。它通过实现AMQP(AdvancedMessageQueuingProtocol)来支持复杂的消息传递模式,是常见的消息中间件之一。本文将深入探讨如何在纯Java环境和SpringBoot项目中使用RabbitMQ,并涵盖详细......
  • 一图看懂云消息队列 RabbitMQ 版对比开源优势
    随着企业对消息队列的性能和稳定性要求越来越高,运维成本也随之增加。云消息队列RabbitMQ版通过架构优化:避免了消息积压导致的内存泄漏和服务器故障等稳定性问题;解决了分布式系统中的脑裂难题;并支持弹性伸缩和按量计费,有效降低资源和运维成本!那么,与开源RabbitMQ相比,云消......
  • 常用的物联网消息队列-Mqtt协议
    EMQX和Mosquitto都是广泛使用的MQTT消息代理,但它们在设计目标、功能和适用场景上有一些显著的区别。Emqx使用教程添加依赖<dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2.5</......
  • RabbitMQ 在 Linux CentOS 和 Docker 环境下的部署及分布式部署指南
    1.引言RabbitMQ是一种广泛使用的消息代理,实现了高级消息队列协议(AMQP)。它在分布式系统中扮演了至关重要的角色,确保消息的可靠传递、负载均衡和任务分发。本文将深入探讨如何在LinuxCentOS和Docker环境下部署RabbitMQ,并实现分布式部署,帮助你快速上手并优化生产环......