Java开发环境搭建之 9.使用Docker Compose 安装部署RabbitMQ

环境:

OS:Ubuntu24

1.创建目录并设置权限:

bash 复制代码
# 删除现有数据(如果前面有创建过此目录,但配置rabbitMQ出现了错误)
sudo rm -rf /var/data/rabbitmq/

# 重新创建目录结构
sudo mkdir -p /var/data/rabbitmq/{data,log,conf}

# 设置正确的所有权(RabbitMQ容器使用999用户)
sudo chown -R 999:999 /var/data/rabbitmq/

# 设置正确的权限(750表示所有者有全部权限,同组用户有读和执行权限)
sudo chmod -R 750 /var/data/rabbitmq/

说明: 如果不手动创建和设置权限,则将会在安装部署成功之后,访问RabbitMQ管理后台的时候报错!

从而登录不了管理后台!

2.创建yml文件

bash 复制代码
sudo vim docker-compose.yml

3.完整的 docker-compose.yml代码如下:

bash 复制代码
version: '2'

networks:
  network:
    ipam:
      driver: default
      config:
        - subnet: '177.7.0.0/16'

services:
  rabbitmq:
    # 使用官方 RabbitMQ 镜像(包含 Web 管理界面)
    image: rabbitmq:3.12-management
    # 容器名称标识
    container_name: rabbitmq
    # 赋予容器特权模式(允许访问宿主机设备)
    privileged: true
    # 重启策略:容器退出时自动重启
    restart: always
    ports:
      # AMQP协议端口映射:宿主机的5672映射到容器的5672
      # AMQP是RabbitMQ的核心消息协议端口,应用程序通过此端口连接
      - 5672:5672
      # Web管理界面端口映射:宿主机的15672映射到容器的15672
      # 通过此端口访问RabbitMQ的Web管理控制台
      - 15672:15672
    environment:
      # RabbitMQ默认管理员用户名(与minio保持一致)
      RABBITMQ_DEFAULT_USER: admin
      # RabbitMQ默认管理员密码(与minio保持一致)
      RABBITMQ_DEFAULT_PASS: admin123
      # 设置容器时区为亚洲/上海(与minio保持一致)
      TZ: Asia/Shanghai
      # 可选:设置默认虚拟主机(保持默认根虚拟主机)
      RABBITMQ_DEFAULT_VHOST: /
    volumes:
      # 数据持久化目录映射:将容器内数据目录挂载到宿主机
      # /var/lib/rabbitmq:容器内RabbitMQ存储消息队列数据的目录
      # 作用:确保消息队列数据在容器重启后不会丢失
      - /var/data/rabbitmq/data:/var/lib/rabbitmq
      # 日志持久化目录映射:将容器内日志目录挂载到宿主机
      # /var/log/rabbitmq:容器内RabbitMQ存储运行日志的目录
      # 作用:便于排查问题和查看运行状态
      - /var/data/rabbitmq/log:/var/log/rabbitmq
      # 时区同步:将宿主机时区文件映射到容器内(与minio配置一致)
      # 作用:确保容器时间与宿主机保持一致
      - /etc/localtime:/etc/localtime:ro
      # 时区信息同步:补充时区配置(与minio配置一致)
      - /etc/timezone:/etc/timezone:ro
    user: "999"  # 指定容器以999用户运行,与主机目录所有权匹配
    # 网络配置,集成到现有Docker网络中
    networks:
      network:
        # 为RabbitMQ容器分配固定IP地址(按您要求的177.7.0.20)
        ipv4_address: 177.7.0.20
  1. 启动 RabbitMQ 服务
bash 复制代码
docker-compose up -d
  1. 验证:

使用 docker-compose logs minio 查看日志,如果没有权限错误。

bash 复制代码
docker ps | grep rabbitmq

docker logs rabbitmq
  1. 在服务器上的防火墙放行端口:
    云服务商(腾讯云、阿里云、AWS等)都有安全组功能,它相当于一个云防火墙,默认只开放少数常用端口(如22, 80, 443),其他所有端口(包括9000, 9001)都是关闭的。
    如果没有放行端口,是访问不了的,如下图所示:
bash 复制代码
操作:登录到您的云服务器管理控制台,找到"安全组"配置。

修改:为您这台服务器的安全组添加一条入站规则(Inbound Rule)。

类型:自定义 TCP

端口范围:5672;15672 (或者分开两条规则:5672和 15672)

源:0.0.0.0/0 (允许所有IP访问) 或 您的本地IP地址(更安全)

策略:允许

保存后通常立即生效。
  1. 访问
    RabbitMQ 管理控制台:http://<您的服务器IP>:15672
    RabbitMQ API 服务: http://<您的服务器IP>:5672

    使用 admin/admin123 登录,如果能成功进入管理界面并创建存储桶,说明一切正常。
相关推荐
霸道流氓气质2 分钟前
ApiPost 中配置自动获取 Token 并调用业务接口完整指南
java·服务器·数据库
独隅23 分钟前
IntelliJ IDEA 接入多种AI大模型插件终极指南(2026.1 企业合规版)
java·人工智能·intellij-idea
还是奇怪1 小时前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
zfoo-framework1 小时前
1.ansible安装 2.虚拟机克隆
java
BullSmall1 小时前
Sonarqube9.9 docker 镜像启动后 conf 下的配置文件没有了
docker·容器·eureka
码上解惑1 小时前
从 Dify 工作流说起:常用节点怎么选、怎样组合?
java·人工智能·ai·agent·dify·智能体·spring ai
ruofu331 小时前
wsl端是py312,但是项目是py311, 如何下载py311的依赖包(wheels)
python·docker
青山木2 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
spider_xcxc2 小时前
Docker 实战:容器化多服务应用,Dockerfile 与 Compose 配置全解析
docker·云原生·eureka·虚拟化·容器化
程序员-珍2 小时前
报错下载android sdk失败
android·java