knowledge/docs/docker/rabbitmq-stomp.md
2024-07-23 12:19:43 +08:00

95 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 构建多平台rabbitmq镜像启用stomp和延时队列(rabbitmq_delayed_message_exchange插件)
## Dockerfile文件
```dockerfile
# 使用 RabbitMQ 3.13.4 管理镜像作为基础镜像
FROM rabbitmq:3.13.4-management
# 设置工作目录
WORKDIR /
# 将本地的插件文件复制到容器内
COPY rabbitmq_delayed_message_exchange-3.13.0.ez .
# 启用插件
RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange rabbitmq_stomp rabbitmq_web_stomp rabbitmq_web_stomp_examples
# 持久化数据目录
VOLUME ["/var/lib/rabbitmq/mnesia"]
# 将容器的启动命令更改为默认命令
CMD ["rabbitmq-server"]
```
> 在`替换源`那一段中,你应该把其中的源地址替换成你的主机可以快速访问的源地址,不建议直接使用本文的源。
## 用`docker buildx`构建
将上面的Dockerfile脚本直接保存为`Dockerfile`文件。
### 检查`docker buildx`环境
```sh
docker info
```
执行以上命令可以看到类似下面的信息:
```txt
Client: Docker Engine - Community
Version: 27.0.3
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.15.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.28.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
...
```
一般情况下如果是通过包管理器安装的docker engine或者docker desktop的话默认就已经安装好了buildx和compose插件了。
### 跨平台构建并发布
接下来我们的目标是用上面的Dockerfile构建跨平台的`rabbitmq:3.13.4`镜像并直接推送到`quay.io`平台上:
本文中我的quay.io账号是wandoubaba517你要替换成你自己的账号。
```sh
docker login quay.io
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64 --push -t quay.io/wandoubaba517/rabbitmq:3.13.4 .
```
执行上面的命令执行过程中会自动从docker hub上拉取名为`moby/buildkit:buildx-stable-1`的镜像并启动容器开始自动构建和推送整个过程在我的2核4G服务器上会执行数小时可以使用`tmux`等终端工具异步执行。
## 使用镜像
```sh
docker run -d \
-p 5672:5672 \
-p 15672:15672 \
-p 61613:61613 \
-v ./data:/var/lib/rabbitmq/mnesia \
-v ./conf/conf.d:/etc/rabbitmq/conf.d \
--hostname rabbitmq \
--name rabbitmq \
quay.io/wandoubaba517/rabbitmq:3.13.4
```
## 工程示例
<https://git.wandoubaba.com/wandoubaba/docker-rabbitmq>
```sh
git clone git@git.wandoubaba.com:wandoubaba/docker-rabbitmq.git
cd docker-rabbitmq
# 先在conf/conf.d/10-defaults.conf文件中设置首次启动创建的默认用户名和密码
# 然后再执行启动脚本
./start
```