Docker 安装 RabbitMQ
前言
特别注意
RabbitMQ 的数据库名称规则是 NODENAME@hostname
,由于 Docker 每次从 Docker Image 启动容器的时候会自动生成 hostname
,这样一来之前保存在主机上的数据库就会没用了,包括之前创建的用户也会没有了。所以在创建容器的时候必须指定 hostname
,比如 --hostname=my-rabbit
,这样 Docker 环境启动后 RabbitMQ 就会一直读取固定目录中的数据。
Docker 安装
快速启动
1 | docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3.8.14 |
这将启动一个 RabbitMQ 容器,默认监听端口为 5672
。如果等待一分钟的时间,Docker 容器会输出以下的日志信息:
1 | # 查看容器的日志信息 |
1 | =INFO REPORT==== 6-Jul-2015::20:47:02 === |
指定 vhost
通过 RABBITMQ_DEFAULT_VHOST
环境变量来指定 vhost
,然后启动 RabbitMQ 容器。
1 | docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost rabbitmq:3.8.14 |
开启控制台管理
开启 RabbitMQ 的控制台管理功能后,浏览器可以通过 http://localhost:15672
来访问 RabbitMQ 的 Web 控制台页面,登录的默认用户名和密码为 guest / guest
。
1 | docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 rabbitmq:3.8.14-management |
提示
在上面的 Docker 命令中,rabbitmq:3.8.14-management
是镜像的完整名称,其中 3.8.14
是镜像的版本号,可以按实际需要指定其他版本号。
指定用户名和密码
通过 RABBITMQ_DEFAULT_USER
和 RABBITMQ_DEFAULT_PASS
环境变量来指定 RabbitMQ 的 Web 控制台的用户名和密码,然后启动 RabbitMQ 容器。
1 | docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 rabbitmq:3.8.14-management |
指定用户名和密码启动容器后,浏览器可以通过 http://localhost:15672
来访问 RabbitMQ 的 Web 控制台页面。
指定启用的插件列表
首先在宿主机创建插件列表的配置文件 enabled_plugins
,然后将需要启用的插件列表写入配置文件中,比如:
1 | [rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp]. |
然后在启动 RabbitMQ 容器时,将宿主机内的插件配置文件挂载到容器内部的 /etc/rabbitmq/enabled_plugins
位置
1 | docker run -d --hostname my-rabbit -v /usr/local/rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins --name some-rabbit rabbitmq:3.8.14 |
Docker-Compose 安装
创建配置文件
创建 docker-compose.yml
配置文件并写入以下内容,其中 RABBITMQ_DEFAULT_USER
为用户名,RABBITMQ_DEFAULT_PASS
为用户密码,5672
为 RabbitMQ 的服务端口,15672
为 RabbitMQ 的 Web 控制台的端口。RabbitMQ 的 Web 控制台默认是未启用的,若需启用 Web 控制台的功能,可以挂载对应的配置文件到容器内的 /etc/rabbitmq/enabled_plugins
,而配置文件的内容为 RabbitMQ 启用的插件列表。
1 | version: '3.5' |
若需要指定 RabbitMQ 容器使用静态 IP 地址,可以参考以下配置内容:
1 | version: '3.5' |
上述挂载的 /usr/local/rabbitmq/enabled_plugins
插件配置文件的内容如下:
1 | [rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp]. |
启动容器
使用以下命令来创建并启动 RabbitMQ 容器,浏览器可以通过 http://localhost:15672
来访问 RabbitMQ 的 Web 控制台页面。
1 | # 创建并启动 RabbitMQ 容器 |
常见问题
如果在登录 RabbitMQ 的 Web 控制台后,Web 页面提示以下的警告信息:
1 | Stats in management UI are disabled on this node |
首先在宿主机内创建 management_agent.disable_metrics_collector.conf
配置文件
1 | touch management_agent.disable_metrics_collector.conf |
然后往宿主机内的配置文件写入以下内容
1 | management_agent.disable_metrics_collector = false |
然后将宿主机内的配置文件挂载到 RabbitMQ 容器内的 /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf
位置
1 | version: '3.5' |