95 lines
2.8 KiB
Markdown
95 lines
2.8 KiB
Markdown
# 构建多平台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
|
||
```
|