Docker 安装RocktMQ 和管理平台
完全可以安装在 `/home/ocean` 目录下。我帮你调整一下配置路径和挂载点。
## 修改后的完整安装步骤
### 第一步:创建 Docker 网络
```bash
docker network create rocketmq
```
### 第二步:启动 NameServer
```bash
docker run -d \
--name rmqnamesrv \
--network rocketmq \
--restart always \
-p 9876:9876 \
-e "JAVA_OPT_EXT=-Xms256m -Xmx256m" \
apache/rocketmq:5.3.2 \
sh mqnamesrv
```
### 第三步:配置并启动 Broker
**1. 创建配置目录和文件**(路径改为 `/home/ocean`):
```bash
# 在 /home/ocean 下创建目录
mkdir -p /home/ocean/rocketmq/conf
mkdir -p /home/ocean/rocketmq/logs
mkdir -p /home/ocean/rocketmq/store
sudo mkdir -p /opt/rocketmq/conf
sudo mkdir -p /opt/rocketmq/logs
sudo mkdir -p /opt/rocketmq/store
# 创建配置文件
vim /home/ocean/rocketmq/conf/broker.conf
```
**2. 在配置文件中写入以下内容**(记得替换 IP):
```properties
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# ⚠️ 重要:替换成你 Ubuntu 机器的真实 IP
brokerIP1 = 你的Ubuntu机器IP
listenPort = 10911
namesrvAddr = rmqnamesrv:9876
```
**3. 启动 Broker 容器**:
```bash
docker run -d \
--name rmqbroker \
--network rocketmq \
--restart always \
-p 10911:10911 \
-p 10909:10909 \
-p 10912:10912 \
-v /opt/rocketmq/conf/broker.conf:/home/ocean/rocketmq/conf/broker.conf \
-v /opt/rocketmq/logs:/home/ocean/rocketmq/logs \
-v /opt/rocketmq/store:/home/ocean/rocketmq/store \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
apache/rocketmq:5.3.2 \
sh mqbroker --enable-proxy -c /opt/rocketmq/conf/broker.conf
```
### 第四步:启动 Dashboard
```bash
docker run -d \
--name rmqdashboard \
--network rocketmq \
--restart always \
-p 8080:8080 \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876" \
apacherocketmq/rocketmq-dashboard:latest
```
### 第五步:修改 SpringBoot 项目配置
在你的 SpringBoot 项目中,修改 `application.yml` 的 RocketMQ 配置:
```yaml
rocketmq:
name-server: 你的Ubuntu机器IP:9876 # 注意:这里不能用 localhost
producer:
group: window-producer-group
```
### 验证安装
**1. 检查容器状态**:
```bash
docker ps | grep rocketmq
```
**2. 查看日志确认启动成功**:
```bash
# 查看 NameServer 日志
docker logs rmqnamesrv
# 查看 Broker 日志
docker logs rmqbroker
# 查看 Dashboard 日志
docker logs rmqdashboard
```
**3. 访问 Dashboard**:
浏览器打开 `http://你的UbuntuIP:8080`
- 用户名:admin
- 密码:123456
### 目录结构说明
安装完成后,`/home/ocean` 下的目录结构是这样的:
```
/home/ocean/
└── rocketmq/
├── conf/
│ └── broker.conf # Broker 配置文件
├── logs/ # RocketMQ 日志(持久化)
└── store/ # 消息存储(持久化)
```
### 常用管理命令
```bash
# 停止所有容器
docker stop rmqbroker rmqnamesrv rmqdashboard
# 启动所有容器
docker start rmqbroker rmqnamesrv rmqdashboard
# 重启单个容器
docker restart rmqbroker
# 删除容器(会丢失数据,除非你备份了 /home/ocean/rocketmq 目录)
docker rm -f rmqbroker rmqnamesrv rmqdashboard
# 查看容器资源占用
docker stats rmqbroker rmqnamesrv rmqdashboard
```
### 故障排查
**如果 Broker 启动失败**:
1. 检查配置文件路径是否正确:
```bash
ls -la /home/ocean/rocketmq/conf/broker.conf
```
2. 检查配置文件中的 `brokerIP1` 是否填了正确的 IP:
```bash
# 查看你的 Ubuntu IP
ip addr show | grep inet
```
3. 查看详细错误日志:
```bash
docker logs rmqbroker
```
**如果 SpringBoot 连不上 RocketMQ**:
1. 确认防火墙是否开放了端口:
```bash
sudo ufw status
# 如果没有开放,执行:
sudo ufw allow 9876/tcp
sudo ufw allow 10911/tcp
```
2. 确认 SpringBoot 配置文件中的 `name-server` 用的是你的 Ubuntu 真实 IP,而不是 `localhost` 或 `127.0.0.1`
这样你的所有 RocketMQ 数据和配置就都放在 `/home/ocean` 目录下了,方便统一管理。
