Java开发环境搭建之 9.使用Docker Compose 安装部署RabbitMQ
环境:
OS:Ubuntu24
1.创建目录并设置权限:
# 删除现有数据(如果前面有创建过此目录,但配置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文件
sudo vim docker-compose.yml
3.完整的 docker-compose.yml代码如下:
version: '2'networks:network:ipam:driver: defaultconfig:- subnet: '177.7.0.0/16'services:rabbitmq:# 使用官方 RabbitMQ 镜像(包含 Web 管理界面)image: rabbitmq:3.12-management# 容器名称标识container_name: rabbitmq# 赋予容器特权模式(允许访问宿主机设备)privileged: true# 重启策略:容器退出时自动重启restart: alwaysports:# AMQP协议端口映射:宿主机的5672映射到容器的5672# AMQP是RabbitMQ的核心消息协议端口,应用程序通过此端口连接- 5672:5672# Web管理界面端口映射:宿主机的15672映射到容器的15672# 通过此端口访问RabbitMQ的Web管理控制台- 15672:15672environment:# 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:rouser: "999" # 指定容器以999用户运行,与主机目录所有权匹配# 网络配置,集成到现有Docker网络中networks:network:# 为RabbitMQ容器分配固定IP地址(按您要求的177.7.0.20)ipv4_address: 177.7.0.20
- 启动 RabbitMQ 服务
docker-compose up -d
- 验证:
使用 docker-compose logs minio 查看日志,如果没有权限错误。
docker ps | grep rabbitmqdocker logs rabbitmq
- 在服务器上的防火墙放行端口:
云服务商(腾讯云、阿里云、AWS等)都有安全组功能,它相当于一个云防火墙,默认只开放少数常用端口(如22, 80, 443),其他所有端口(包括9000, 9001)都是关闭的。
如果没有放行端口,是访问不了的,如下图所示:
操作:登录到您的云服务器管理控制台,找到“安全组”配置。修改:为您这台服务器的安全组添加一条入站规则(Inbound Rule)。类型:自定义 TCP端口范围:5672;15672 (或者分开两条规则:5672和 15672)源:0.0.0.0/0 (允许所有IP访问) 或 您的本地IP地址(更安全)策略:允许保存后通常立即生效。
- 访问
RabbitMQ 管理控制台:http://<您的服务器IP>:15672
RabbitMQ API 服务: http://<您的服务器IP>:5672
使用 admin/admin123 登录,如果能成功进入管理界面并创建存储桶,说明一切正常。