Docker 启动时 预配置 RabbitMQ

本文介绍了如何在Docker启动时预配置RabbitMQ,包括创建用户、虚拟主机(Vhost)和队列。通过制作RabbitMQ的CONFIG文件指定初始化的definitions.json,并在Docker运行时加载这两个文件,简化了预配置的复杂过程。

Docker 启动时 预配置 RabbitMQ (建立用户 / Vhost / Queue)

在 Docker 环境中运行 RabbitMQ 时,许多场合希望预定义一些用户/vhost/queue。官方的教程都是通过 GUI 或者命令行来实现,民间也有通过自定义 RabbitMQ 镜像的方法,但操作性都比较繁杂。本文提供一种更简便的方法。

实现的大致流程

  1. 制作 RabbitMQ CONFIG 文件,指定初始化定义 definitions.json 文件
  2. 制作 definitions.json,来定义需要初始化的对象
  3. 运行 Docker,载入以上两个文件

制作 RabbitMQ CONFIG 文件

该文件非常简单,只需要在官方默认的基础上添加一行内容:

# 默认
loopback_users.guest = false
# 新增以下
management.load_definitions = /var/lib/rabbitmq/definitions.json

官方文档请参考

制作 definitions.json

如果你已有一个配置好的 RabbitMQ,该文件可以通过命令行/WEB API 导出。

rabbitmqadmin --host rabbitmq-example-server --username admin --password pass export custom_definitions.json

也可以手写一个,此处提供一个示例,建立一个名为 support 用户,一个 vhost 以及一个queue:

{
  "rabbit_version": "3.11.9",
  "rabbitmq_version": "3.11.9",
  "product_name": "RabbitMQ",
  "product_version": "3.11.9",
  "users": [
    {
      "name": "support",
      "password_hash": "**********************************************",
      "hashing_algorithm": "rabbit_password_hashing_sha256",
      "tags": [
        "administrator"
      ],
      "limits": {
      }
    }
  ],
  "vhosts": [
    {
      "name": "vhost"
    }
  ],
  "permissions": [
    {
      "user": "support",
      "vhost": "vhost",
      "configure": ".*",
      "write": ".*",
      "read": ".*"
    }
  ],
  "queues": [
    {
      "name": "queue1",
      "vhost": "vhost",
      "durable": true,
      "auto_delete": false,
      "arguments": {
        "x-queue-type": "classic"
      }
    }
  ]
}

运行

  1. 建立一个空目录 mq,放入 definitions.json。再建立一个子目录 conf.d,放入 CONFIG 文件。
  2. 启动 Docker, 通过 RABBITMQ_CONFIG_FILERABBITMQ_CONFIG_FILES 环境变量指定自定义的 CONFIG 文件/目录
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v /mq:/var/lib/rabbitmq -e RABBITMQ_CONFIG_FILES=/var/lib/rabbitmq/conf.d rabbitmq:management

/var/lib/rabbitmq 是 RabbitMQ 运行时存放数据的目录,为了简化操作步骤。所以本方案直接把 CONFIG 文件和 definitions.json 也都直接放在该目录中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值