Skip to content

colovu/docker-rabbitmq

Repository files navigation

RabbitMQ

针对 RabbitMQ 应用的 Docker 镜像,用于提供 RabbitMQ 服务。

使用说明可参照:官方说明

rabbitmq-logo

版本信息

  • 3.8、latest (ErLang 22.3.0)
  • 3.7 (ErLang 22.3.0)

镜像信息

  • 镜像地址:registry.cn-shenzhen.aliyuncs.com/colovu/rabbitmq:3.8

TL;DR

Docker 快速启动命令:

$ docker run -d registry.cn-shenzhen.aliyuncs.com/colovu/rabbitmq:3.8

Docker-Compose 快速启动命令:

$ curl -sSL https://raw.githubusercontent.com/colovu/docker-imgname/master/docker-compose.yml > docker-compose.yml

$ docker-compose up -d

默认对外声明

端口

  • 4369:EarLang epmd 默认端口,用于集群邻居发现(可配置)
  • 5671:RabbitMQ AMQP 0.9.1 Clients 使用(可配置)
  • 5672:RabbitMQ AMQP 1.0 Clients 使用(可配置)
  • 15671:RabbitMQ 默认 HTTPS Web 端口(可配置)
  • 25672:RabbitMQ ErLang 分布式节点/工具通讯(可配置)
  • 61613:STOMP 插件默认访问端口(可配置)
  • 61614:STOMP 插件默认 TLS 访问端口(可配置)
  • 1883:MQTT 插件默认访问端口(可配置)
  • 8883:MQTT 插件默认 TLS 访问端口(可配置)

数据卷

镜像默认提供以下数据卷定义,默认数据分别存储在自动生成的应用名对应rabbitmq子目录中:

/var/log                # RabbitMQ 日志输出
/srv/conf               # RabbitMQ 配置文件
/srv/data               # RabbitMQ 数据存储

如果需要持久化存储相应数据,需要在宿主机建立本地目录,并在使用镜像初始化容器时进行映射。宿主机相关的目录中如果不存在对应应用 RabbitMQ 的子目录或相应数据文件,则容器会在初始化时创建相应目录及文件。

容器配置

在初始化 RabbitMQ 容器时,如果配置文件不存在,可以在命令行中使用-e VAR_NAME=VALUE参数对默认参数进行修改。类似命令如下:

$ docker run -d -e "RABBITMQ_PASSWORD=my_password" --name rabbitmq registry.cn-shenzhen.aliyuncs.com/colovu/rabbitmq:3.8

在 Docker Compose 配置文件中类似如下:

rabbitmq:
  ...
  environment:
    - RABBITMQ_PASSWORD=my_password
  ...

常规配置参数

常使用的环境变量主要包括:

  • RABBITMQ_NODE_NAME:默认值:rabbit@localhost。设置 RabbitMQ 服务节点名称

建议为:node@hostname 或 node;在集群中,使用 localhsot 定义节点名时,需要确保为容器定义了一个固定的 hostname ,否则,容器将无法正常工作。

  • RABBITMQ_NODE_PORT_NUMBER:默认值:5672。设置 RabbitMQ 监听服务端口
  • RABBITMQ_NODE_TYPE:默认值:stats。设置 RabbitMQ 服务节点类型。取值范围: stats, queue-ram or queue-disc
  • RABBITMQ_USERNAME:默认值:colovu。设置 RabbitMQ 服务默认用户名
  • RABBITMQ_PASSWORD:默认值:pass4colovu。设置 RabbitMQ 服务默认用户密码。;不与 RABBITMQ_HASHED_PASSWORD 同时设置
  • RABBITMQ_HASHED_PASSWORD:默认值:。设置 RabbitMQ 服务默认用户密码(hash加密);不与 RABBITMQ_PASSWORD 同时设置
  • ENV_DEBUG:默认值:false。设置是否输出容器调试信息。可设置为:1、true、yes

集群配置参数

使用 RabbitMQ 镜像,可以很容易的建立一个 RabbitMQ 集群。针对 集群模式,有以下参数可以配置:

  • RABBITMQ_CLUSTER_NODE_NAME:默认值:。定义当前节点加入的 RabbitMQ 集群名,如:clusternode@hostname
  • RABBITMQ_CLUSTER_PARTITION_HANDLING:默认值:ignore。设置集群的分区信息恢复机制
  • RABBITMQ_ERL_COOKIE:默认值:。设置集群中用于交互的 Cookie,以确认哪些服务器可以相互通讯。只有 Cookie 相同的服务器才可以互相访问

可选配置参数

如果没有必要,可选配置参数可以不用定义,直接使用对应的默认值,主要包括:

  • RABBITMQ_DISK_FREE_LIMIT:默认值:{mem_relative, 1.0}。设置应用磁盘占用的空闲空间限制
  • RABBITMQ_MANAGER_BIND_IP:默认值:0.0.0.0。设置管理后台绑定的 IP 地址。容器中默认不需要配置
  • RABBITMQ_MANAGER_PORT_NUMBER:默认值:15672。设置 RabbitMQ 管理服务的端口
  • RABBITMQ_VHOST:默认值:/。设置应用虚拟主机根路径
  • RABBITMQ_ENABLE_PLUGINS:默认值:。设置启用的插件。如:rabbitmq_mqtt、rabbitmq_tracing、rabbitmq_web_mqtt、syslog等

rabbitmq_auth_backend_ldap、rabbitmq_management不在这里设置;使用对应功能启用。

  • RABBITMQ_VM_MEMORY_HIGH_WATERMARK:默认值:。参见官方文档。暂时未起作用

STOMP 配置参数

在使用参数RABBITMQ_ENABLE_PLUGINS启用rabbitmq_stomp插件后,以下配置参数有效:

  • RABBITMQ_STOMP_USERNAME:默认值:admin
  • RABBITMQ_STOMP_PASSWORD:默认值:colovu
  • RABBITMQ_STOMP_VHOST:默认值:RABBITMQ_VHOST设置的值
  • RABBITMQ_STOMP_PORT_NUMBER:默认值:61613

LDAP 配置参数

在配置服务器使用 LDAP 做相关数据存储及验证时,可以使用以下参数配置相关的 LDAP 服务器信息:

  • RABBITMQ_ENABLE_LDAP:默认值:no。配置是否启用 LDAP 支持
  • RABBITMQ_LDAP_SERVER:默认值:。服务器地址或主机名
  • RABBITMQ_LDAP_SERVER_PORT:默认值:389。LDAP 服务端口
  • RABBITMQ_LDAP_USER_DN_PATTERN:默认值:。RabbitMQ 绑定 LDAP 时使用的 DN,如:cn=$${username},dc=example,dc=org

注意:需要使用$$以在参数中输出$

  • RABBITMQ_LDAP_TLS:默认值:no。配置是否启用 TLS 加密传输

TLS 配置参数

  • RABBITMQ_SSL_CERT_FILE:默认值:。本机证书文件
  • RABBITMQ_SSL_KEY_FILE:默认值:。本机私钥文件
  • RABBITMQ_SSL_CA_FILE:默认值:。CA证书文件

安全

用户及密码

RabbitMQ 镜像默认设置了用户colovu及对应的密码pass4colovu,在实际生产环境中建议使用自定义的用户名及密码控制访问。

容器安全

本容器默认使用应用对应的运行时用户及用户组运行应用,以加强容器的安全性。在使用非root用户运行容器时,相关的资源访问会受限;应用仅能操作镜像创建时指定的路径及数据。使用Non-root方式的容器,更适合在生产环境中使用。

注意事项

  • 容器中启动参数不能配置为后台运行,只能使用前台运行方式,即:daemonize no
  • 如果应用使用后台方式运行,则容器的启动命令会在运行后自动退出,从而导致容器退出

参考


本文原始来源 Endial Fang @ Github.com

About

Dockerfile for RabbitMQ.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published