提示:macmin docker-desktop中安装emqx, 构建自定义镜像, 系统架构arm64“
前言
macmin docker-desktop中安装emqx, 构建自定义镜像, 系统架构arm64。首先为什么这么做,我用了默认的镜像xmqx/emqx:5.8.6,docker启动报错说是缺少依赖。换个思路通过命令uname -a命令查看系统架构,官网找到对应arm64的镜像,mac宿主机启动成功,但在docker内会报错架构不兼容或者缺少依赖…宿主机和容器的操作系统环境有差异。最终我打算构建自定义镜像,查看了emqx官网最新的5.8.6的下载链接,提供了ubunu对应的服务,于是我以ubunu:22.04作为基础镜像,结合官网的emqx-5.8.6-ubuntu22.04-amd64.tar.gz构建了自定义镜像,成功在docker容器内部启动成功。
1.官网链接
- EMQX文档,包含使用文档和多环境部署方案.
https://docs.emqx.com/zh/emqx/v5.0/deploy/install.html- EMQX下载目录
https://www.emqx.com/zh/downloads/broker
2.Dockerfile
注意:在Dockerfile里面提供了两种方式,默认是下载压缩包,一步到位。如果你的docker仓库无法下载,可以参考之前的文章配置docker仓库,或者使用第二种方式,直接下载http链接中的压缩包到本地,拷贝到Dockerfile相同目录,将Dockerfile里面的下载链接换成Copy emqx-5.8.6-ubuntu22.04-arm64.tar.gz /opt/emqx/emqx.tar.gz就可以了
# 使用ubuntu:22.04 arm64 作为基础镜像
FROM ubuntu:22.04
# 安装依赖
RUN apt-get update && apt-get install -y \
bash \
procps \
openssl \
libncurses-dev \
libatomic1 \
wget \
tar \
&& rm -rf /var/lib/apt/lists/*
# 创建目录(默认会创建,不过还是提前创建保险一点)
RUN mkdir -p /opt/emqx
# 下载
RUN wget https://www.emqx.com/zh/downloads/broker/v5.8.6/emqx-5.8.6-ubuntu22.04-arm64.tar.gz -O /opt/emqx/emqx.tar.gz
# 已下载emqx-5.8.6-ubuntu22.04-arm64.tar.gz 的方式
#Copy emqx-5.8.6-ubuntu22.04-arm64.tar.gz /opt/emqx/emqx.tar.gz
# 解压
RUN tar -zxf /opt/emqx/emqx.tar.gz -C /opt/emqx
# 设置工作目录
WORKDIR /opt/emqx
# 暴露端口
EXPOSE 1883 8083 8084 8883 18083
# 启动 emqx
CMD ["/opt/emqx/bin/emqx", "foreground"]
3.构建Docker镜像
在Dockerfile目录下,执行以下命令构建Docker镜像,注意:命令后面(有个点 有个点 有个点)
docker build -t mac-min-emqx:5.8.6 .
4.docker-compose.yml
构建完成后,使用以下docker-compose构建容器
services:
mqtt:
image: mac-min-emqx:5.8.6
platform: linux/arm64
container_name: mqtt
ports:
- "1883:1883" # MQTT TCP 端口
- "8883:8883" # MQTT over TLS 端口
- "8083:8083" # MQTT over WebSocket 端口
- "8084:8084" # MQTT over WSS 端口
- "18083:18083" # EMQX Dashboard 端口
volumes:
- /Users/mac/data/mqtt/data:/opt/emqx/data
- /Users/mac/data/mqtt/lib:/opt/emqx/lib
- /Users/mac/data/mqtt/log:/opt/emqx/log
environment:
- TZ=Asia/Shanghai
- EMQX_NODE_NAME=emqx@rma-gpt-mqtt
restart: always
networks:
- mac
networks:
mac:
driver: bridge
5.登录
http://192.168.3.238:18083/
用户名:admin
密码:public(首次登录需要修改密码)