RabbitMQ 安装说明(Docker)

使用命令行

在此示例中,我们将创建一个 RabbitMQ 客户端实例,该实例将连接到与客户端在同一码头网络上运行的服务器实例。

步骤1: 创建一个网络
docker network create app-tier --driver bridge
步骤2:启动RabbitMQ服务器实例

使用--network app-tier 对 的论证docker run命令将 RabbitMQ 容器附加到app-tier网络。

docker run -d --name rabbitmq-server \
    --network app-tier \
    bitnami/rabbitmq:latest
步骤 3:启动 RabbitMQ 客户端实例

最后,我们创建一个新的容器实例来启动 RabbitMQ 客户端,并连接到上一步中创建的服务器:

docker run -it --rm \
    --network app-tier \
    bitnami/rabbitmq:latest rabbitmqctl -n rabbit@rabbitmq-server status

使用 Docker Compose 文件

未指定时,Docker Compose 会自动设置新网络,并将所有部署的服务附加到该网络。但是,我们将明确定义一个新的bridge网络命名app-tier. .在本例中,我们假设您希望从您自己的自定义应用程序映像连接到 RabbitMQ 服务器,该映像在以下代码片段中通过服务名称标识。myapp. .

version: '2'

networks:
  app-tier:
    driver: bridge

services:
  rabbitmq:
    image: 'bitnami/rabbitmq:latest'
    networks:
      - app-tier
  myapp:
    image: 'YOUR_APPLICATION_IMAGE'
    networks:
      - app-tier
IMPORTANT重要事项:

    请使用您的应用程序图像更新上述片段中的 YOU_APPLICATION_IMAGE 占位符
    在应用程序容器中,使用主机名rabbitmq连接到 RabbitMQ 服务器

使用以下方法启动容器:

docker-compose up -d

配置

环境变量

可定制环境变量
名称 描述 默认值
RABBITMQ_CONF_FILE RabbitMQ 配置文件。 ${RABBITMQ_CONF_DIR}/rabbitmq.conf
RABBITMQ_DEFINITIONS_FILE 是否加载外部 RabbitMQ 定义。这与安全设置 RabbitMQ 密码不兼容。 /app/load_definition.json
RABBITMQ_SECURE_PASSWORD 是否安全设置RabbitMQ密码。这与加载外部 RabbitMQ 定义不兼容。 no
RABBITMQ_CLUSTER_NODE_NAME RabbitMQ 群集节点名称。指定此功能时,请确保您还指定有效的主机名,因为 RabbitMQ 将无法启动。 nil
RABBITMQ_CLUSTER_PARTITION_HANDLING RabbitMQ 群集分区恢复机制。 ignore
RABBITMQ_DISK_FREE_RELATIVE_LIMIT RabbitMQ 存储数据的分区的磁盘相对自由空间限制。 1.0
RABBITMQ_DISK_FREE_ABSOLUTE_LIMIT RabbitMQ 存储数据的分区的磁盘绝对空闲空间限制(优先于相对限制)。 nil
RABBITMQ_ERL_COOKIE Erlang cookie 以确定是否允许不同的节点相互通信。 nil
RABBITMQ_VM_MEMORY_HIGH_WATERMARK 高内存水印为RabbitMQ阻止发布者,并防止新消息被排队。可以指定为绝对值或相对值(百分比或值在0到1之间)。 nil
RABBITMQ_LOAD_DEFINITIONS 是否加载外部 RabbitMQ 定义。这与安全设置 RabbitMQ 密码不兼容。 no
RABBITMQ_MANAGEMENT_BIND_IP RabbitMQ 管理服务器绑定 IP 地址。 0.0.0.0
RABBITMQ_MANAGEMENT_PORT_NUMBER RabbitMQ 管理服务器端口号。 15672
RABBITMQ_MANAGEMENT_ALLOW_WEB_ACCESS 允许 Web 访问 RABBITMQ_USERNAME 的 RabbitMQ 管理门户 false
RABBITMQ_NODE_NAME RabbitMQ 节点名称。 rabbit@localhost
RABBITMQ_USE_LONGNAME 是否使用完全限定的名称来识别节点 false
RABBITMQ_NODE_PORT_NUMBER RabbitMQ 节点端口号。 5672
RABBITMQ_NODE_TYPE RabbitMQ 节点类型。 stats
RABBITMQ_VHOST RabbitMQ vhost 的相关歌曲 /
RABBITMQ_VHOSTS 附加虚拟主机(vhost)列表。 nil
RABBITMQ_CLUSTER_REBALANCE 重新平衡 RabbitMQ 群集。 false
RABBITMQ_CLUSTER_REBALANCE_ATTEMPTS Max 尝试重新平衡检查以运行 100
RABBITMQ_USERNAME RabbitMQ用户名。 user
RABBITMQ_PASSWORD RabbitMQ 用户密码。 bitnami
RABBITMQ_FORCE_BOOT 强制一个节点启动,即使它不是最后一个关闭 no
RABBITMQ_ENABLE_LDAP 启用 LDAP 配置。 no
RABBITMQ_LDAP_TLS 启用安全的 LDAP 配置。 no
RABBITMQ_LDAP_SERVERS LDAP服务器主机名的逗号、半正值或空格分隔列表。 nil
RABBITMQ_LDAP_SERVERS_PORT LDAP 服务器端口。 389
RABBITMQ_LDAP_USER_DN_PATTERN DN 用于以 cn=$${username}、dc=example,dc=org 的形式绑定到 LDAP。 nil
RABBITMQ_NODE_SSL_PORT_NUMBER 用于 SSL 连接的 RabbitMQ 节点端口号。 5671
RABBITMQ_SSL_CACERTFILE RabbitMQ 服务器 SSL CA 证书文件的路径。 nil
RABBITMQ_SSL_CERTFILE RabbitMQ 服务器 SSL 证书文件的路径。 nil
RABBITMQ_SSL_KEYFILE RabbitMQ 服务器 SSL 证书密钥文件的路径。 nil
RABBITMQ_SSL_DEPTH 在有效认证路径中可能遵循同行证书的非自颁发中间证书的最大数量。 nil
RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT 是否拒绝 TLS 连接,如果客户端未能提供证书。 no
RABBITMQ_SSL_VERIFY 是否启用对等 SSL 证书验证。有效值: ridy_none, ridate_peer。 verify_none
RABBITMQ_MANAGEMENT_SSL_PORT_NUMBER 用于 SSL/TLS 连接的 RabbitMQ 管理服务器端口号。 15671
RABBITMQ_MANAGEMENT_SSL_CACERTFILE RabbitMQ 管理服务器 SSL CA 证书文件。 $RABBITMQ_SSL_CACERTFILE
RABBITMQ_MANAGEMENT_SSL_CERTFILE RabbitMQ 服务器 SSL 证书文件的路径。 $RABBITMQ_SSL_CERTFILE
RABBITMQ_MANAGEMENT_SSL_KEYFILE RabbitMQ 管理服务器 SSL 证书密钥文件的路径。 $RABBITMQ_SSL_KEYFILE
RABBITMQ_MANAGEMENT_SSL_DEPTH 对于 RabbitMQ 管理服务器,在有效认证路径中可能遵循对等证书的非自颁发中间证书的最大数量。 nil
RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT 是否拒绝 TLS 连接,如果客户端未能为 RabbitMQ 管理服务器提供证书。 yes
RABBITMQ_MANAGEMENT_SSL_VERIFY 是否为 RabbitMQ 管理服务器启用对等 SSL 证书验证。有效值: ridy_none, ridate_peer。 verify_peer
只读环境变量
名称 描述 价值
RABBITMQ_VOLUME_DIR 持久性基目录。 /bitnami/rabbitmq
RABBITMQ_BASE_DIR RabbitMQ 安装目录。 /opt/bitnami/rabbitmq
RABBITMQ_BIN_DIR RabbitMQ 可执行文件目录。 ${RABBITMQ_BASE_DIR}/sbin
RABBITMQ_DATA_DIR RabbitMQ 数据目录。 ${RABBITMQ_VOLUME_DIR}/mnesia
RABBITMQ_CONF_DIR RabbitMQ 配置目录。 ${RABBITMQ_BASE_DIR}/etc/rabbitmq
RABBITMQ_DEFAULT_CONF_DIR RabbitMQ 默认配置目录。 ${RABBITMQ_BASE_DIR}/etc/rabbitmq.default
RABBITMQ_CONF_ENV_FILE 用于环境变量的 RabbitMQ 配置文件。 ${RABBITMQ_CONF_DIR}/rabbitmq-env.conf
RABBITMQ_HOME_DIR RabbitMQ home 目录。 ${RABBITMQ_BASE_DIR}/.rabbitmq
RABBITMQ_LIB_DIR RabbitMQ lib 目录。 ${RABBITMQ_BASE_DIR}/var/lib/rabbitmq
RABBITMQ_INITSCRIPTS_DIR RabbitMQ init 脚本目录。 /docker-entrypoint-initdb.d
RABBITMQ_LOGS_DIR RabbitMQ 日志目录。 ${RABBITMQ_BASE_DIR}/var/log/rabbitmq
RABBITMQ_PLUGINS_DIR RabbitMQ 插件目录。 ${RABBITMQ_BASE_DIR}/plugins
RABBITMQ_MOUNTED_CONF_DIR RabbitMQ 目录,用于挂载配置文件。 ${RABBITMQ_VOLUME_DIR}/conf
RABBITMQ_DAEMON_USER RabbitMQ 系统用户名。 rabbitmq
RABBITMQ_DAEMON_GROUP RabbitMQ 系统用户组。 rabbitmq
RABBITMQ_MNESIA_BASE RabbitMQ mnesia 目录的路径。 $RABBITMQ_DATA_DIR
RABBITMQ_COMBINED_CERT_PATH RabbitMQ 服务器 SSL 证书密钥文件的路径。 ${RABBITMQ_COMBINED_CERT_PATH:-/tmp/rabbitmq_combined_keys.pem}

启动 barbitmq 映像时,可以通过在 docker-compose 文件或 docker-compose 文件上传递一个或多个环境变量来调整实例的配置。docker run 命令行。如果要添加新的环境变量:

  • 对于 docker-compose ,在应用程序部分下添加变量名称和值docker-compose.yml⁠
    文件存在于此存储库中:
    rabbitmq:
    ...
    environment:
      - RABBITMQ_PASSWORD=my_password
    ...
  • 手动执行 添加 a-e选项与每个变量和值。

设置群集

使用 Docker Compose

这是使用群集配置运行 RabbitMQ 的最简单方法:

步骤 1:在您的中添加统计节点 docker-compose.yml

将下面的片段复制到 docker-compose.yml 中,将 RabbitMQ 统计节点添加到群集配置中。

version: '2'

services:
  stats:
    image: bitnami/rabbitmq
    environment:
      - RABBITMQ_NODE_TYPE=stats
      - RABBITMQ_NODE_NAME=rabbit@stats
      - RABBITMQ_ERL_COOKIE=s3cr3tc00ki3
    ports:
      - '15672:15672'
    volumes:
      - 'rabbitmqstats_data:/bitnami/rabbitmq/mnesia'

注意: 服务(stats) 的名称很重要,因此节点可以解析要群集的主机名。(注意节点名称为rabbit@stats)

步骤 2:在配置中添加队列节点

更新您想要使用 RabbitMQ 统计节点群集的节点的定义。

  queue-disc1:
    image: bitnami/rabbitmq
    environment:
      - RABBITMQ_NODE_TYPE=queue

Note: the README for this container is longer than the DockerHub length limit of 25000, so it has been trimmed. The full README can be found at https://github.com/bitnami/containers/blob/main/bitnami/rabbitmq/README.md

作者:Jeebiz  创建时间:2025-04-24 18:31
最后编辑:Jeebiz  更新时间:2025-04-24 19:00