制作镜像包或插件包
将jar包转换为镜像包或插件包。
若制作镜像包以容器化方式部署应用,不支持在一个容器内运行多个集成ModuleSDK的软件进程或者重启集成ModuleSDK的软件进程,会导致鉴权失败等问题。
镜像包打包
- 上传打包的项目。
将jar文件上传到联网的linux机器上,如目录(/home/monitor)中
- 安装docker。
请确认使用的系统已经安装docker(docker版本需要高于17.06,推荐18.06),安装参照docker 安装教程
- 制作镜像。
- 搜索基础镜像,基础镜像需要集成jre。
- 选择合适的镜像(镜像需要集成了jre且版本不低于8)
NAME DESCRIPTION STARS OFFICIAL AUTOMATED livingobjects/jre8 Jre8 image 4 [OK]
livingobjects/jre8镜像是docker hub第三方提供的镜像,非IoT团队发布,且IoT团队未提供任何官方镜像。该镜像在此仅做示例,IoT团队对该镜像的安全性不作保证。强烈建议用户自己封装镜像!
- 拉取镜像
- 编写dockerfile制作镜像
dockerfile内容参照如下(具体可参考编写高效的Dockerfile )
#Version 1.0.0 FROM livingobjects/jre8 #基础镜像来源 RUN mkdir -p /opt/iot/edge/monitor / && chmod -R 777 /opt/ #授权 COPY monitor /opt/iot/edge/monitor #复制文件到指定目录,此dockerfile文件位置:/home,jar包位置:/home/monitor USER root #用户名 EXPOSE 8080 CMD ["java", "-jar", "/opt/iot/edge/monitor/monitor-app.jar", "run"] #运行命令
- 构建镜像
- 查看打包完成的镜像
- 镜像上传。
- 上传镜像
镜像上传需要使用SWR镜像容器服务,开通及使用请参照容器镜像服务 SWR_用户指南
- 获取SWR登录指令
请参照使用容器引擎客户端上传镜像第四节。
- tag镜像
使用tag命令将镜像重命名以确定上传位置和组织,获取上传位置和组织前缀请参考pull/push命令
docker tag edge_monitor:1.0.0 swr.cn-north-4.myhuaweicloud.com/hw_swr/edge_monitor:1.0.0
- 上传镜像
docker push swr.cn-north-4.myhuaweicloud.com/hw_swr/edge_monitor:1.0.0
- 查看上传结果
- 上传镜像后请在SWR将镜像设置为公开。
- 上传镜像
插件包打包
- 插件包制作。
- 插件包格式要求如下:
插件包结构如下:
app.zip
├── ****.jar //可执行jar文件,必须
├── start.sh //启动脚本 必须文件 当前不提供参数方式启动
└── stop.sh //停止脚本 非必须
- 构建插件包。
以monitor-app为例,在项目打包后得到monitor-app.jar
在monitor-app.jar文件的同目录下创建start.sh,内容如下:function log(){ echo "`date "+%Y-%m-%d %T"`: $1" } log "[INFO] start execut process." #调试时可打开,确认sdk需要的环境能被获取 #echo "${device_id}" > test_enviroment.file pwd #更新环境变量,防止找不到java命令。 source /etc/profile #运行文件在/var/IoTEdge/downloaded-job/run下面 java -jar ./monitor-app.jar > monitor_running.log 2>&1
将monitor-app.jar和start.sh一起压缩得到monitor-app.zip。
- 插件包格式要求如下:
- 插件包上传。
- 开通对象存储服务OBS。
进程包上传方式需要开通对象存储服务OBS,请参考对象存储服务 OBS_快速入门
- 上传进程包。
- 开通对象存储服务OBS。