ubuntu中docker安装MQTT服务器ApacheActiveMQ Artemis

一.背景

        项目需要物联网设备接入,为了开发方便,自己本机搭建了简易物联网服务器环境,方便开发。网上没有合适的docker镜像文件,我自己以jdk8为基础,手动在容器中安装了MQTT服务器。并实现了主机访问和MQTT服务器随容器启动。

二.版本

操作系统:Windows 10 家庭版

Oracle VM VirtualBox:版本 6.0.10 r132072 (Qt5.6.2)

Ubuntu:16.04.6-desktop-amd64

docker:18.09.7

jdk:1.8.*

ActiveMQ Artemis:2.19.1

三.安装过程

1.安装jdk8容器

sudo docker run -itd -p 1883:1883 -p 8161:8161 -p 61616:61616 --restart=always --name  openjdk8 adoptopenjdk/openjdk8

2.安装ActiveMQ Artemis

在ubuntu中,用浏览器下载了ActiveMQ Artemis2.19.1。或者自己去找需要的版本

下载的路径为:/home/potato/下载/apache-artemis-2.19.1-bin.tar.gz

把压缩包解压,并复制到容器里面。

sudo tar -zxvf apache-artemis-2.19.1-bin.tar.gz
sudo docker cp /home/potato/下载/apache-artemis-2.19.1 openjdk8:/opt/artemis2.19.1

 进入容器并初始化ActiveMQ Artemis。初始化设置了默认帐号为potato,默认密码为1。初始化的实例artemisinstance路径在/opt/artemis2.19.1/bin/artemisinstance中。

sudo docker exec -it  openjdk8 /bin/bash
cd /opt/artemis2.19.1/bin
./artemis create --user potato --password 1 --role admins --http-host 0.0.0.0 --allow-anonymous true artemisinstance

3.启动ActiveMQ Artemis

cd artemisinstance/bin
./artemis-service start

4.把ActiveMQ Artemis设置为随容器启动

思路比较简单,写一个启动脚本,然后把这个脚本加入容器的启动中。

在Ubuntu系统新建文件start_artemis2.19.1.sh

touch /tmp/start_artemis2.19.1.sh

手工去打开编辑,文件内容为:

cd /opt/artemis2.19.1/bin/artemisinstance/bin
./artemis-service start

在Ubuntu系统新建文件1.bashrc

touch /tmp/1.bashrc

手工去打开编辑,文件内容为:

# startup run
if [ -f /root/start_artemis2.19.1.sh ]; then      
./root/start_artemis2.19.1.sh
fi

复制2个文件到容器内部对应位置

sudo docker cp /tmp/start_artemis2.19.1.sh openjdk8:/root/start_artemis2.19.1.sh
sudo docker cp /tmp/1.bashrc openjdk8:/root/.bashrc

进入容器,并将start_artemis2.19.1.sh文件设置为可执行脚本。

sudo docker exec -it  openjdk8 /bin/bash
chmod +x /root/start_artemis2.19.1.sh

5.端口映射到开发电脑

过程忽略,跟之前的tomcat映射到开发机差不多。主要就是映射了1883、8161、61616。

四.测试

测试用的是MQTT X。主页是MQTT X:跨平台 MQTT 5.0 桌面客户端工具。下载地址是https://www.emqx.com/zh/downloads/MQTTX/v1.8.3/MQTTX-Setup-1.8.3-x64.exe

1.设置语言为中文

一路安装默认完成后,修改语言为中文。

2.新建连接

就填了上图中的4个框,其他都是默认的。 

点击连接啦:

连接后提示连接成功

3.设备信息模拟测试

 添加一个订阅,发一个消息。

默认点确定就行。

点了 右下角的发送按钮(有的屏幕小,不一定看的到,要注意)后就发现,消息发送和监听都是正常的。

五.问题回顾

 我不熟悉linux、Ubuntu、docker、ActiveMQ Artemis等,过程中遇到的主要点是:

1.Ubuntu中下载的软件解压

2.Ubuntu中的文件夹复制到容器里面

3.安装ActiveMQ Artemis不像传统的tomcat,解压就启动,还要构建一个运行的实例(或者叫文件夹)。新建的文件夹bin下面的才用来启动。

4.把容器里面已经可以运行、访问的软件ActiveMQ Artemis加入容器的启动,伴随容器的启动而自动启动。之前用的镜像中心的那些镜像,都是安装后能够伴随容器启动而自动启动的。所以,我手动实现了这一步。

5.编辑文件,我也不太会,还是用的可视化的工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值