- 最新动态
- 产品介绍
- 快速入门
- 用户指南
- 开发指南
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
-
常见问题
- 概念相关
-
节点管理
- 安装专业版节点异常如何处理?
- 安装专业版节点,执行安装命令时失败,一直提示“edgedaemon not found"?
- 安装专业版节点失败,提示“edge_core has existed”,该如何处理?
- 专业版节点所在机器断网/断电一段时间后恢复,节点模块一直处于“部署中”怎么处理?
- 专业版节点欠费充值后,部署、升级模块仍然报错?
- MQTT设备无法接入边缘节点如何处理?专业版节点所在机器断网/断电一段时间后恢复,节点模块一直处于“部署中”怎么处理?
- 误删除IoTDA上的edge_node/modbus_server产品后,在边缘服务创建节点/添加Modbus设备失败,该怎么处理?
- 边缘节点离线排查指南
- 修改专业版(Docker)或基础版节点的云端日志级别,但没有生效?
- ubuntu系统下节点shell命令兼容性导致的安装失败
- 子设备管理
- 应用管理
- 账号与权限
- Module-SDK
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
制作镜像包或插件包
若制作镜像包以容器化方式部署应用,不支持在一个容器内运行多个集成ModuleSDK的软件进程或者重启集成ModuleSDK的软件进程,会导致鉴权失败等问题。
镜像包打包
- 构建需要打包的项目
构建项目,此处示例,构建好的文件存放在目录 /home/ModuleSDK-Demo 下
- 安装docker
请确认您使用的系统已经安装Docker(Docker版本需要高于17.06,推荐18.06),安装方法可参照docker 安装教程。
- 制作镜像
- 搜索基础镜像。
docker search dotnet
- 根据您的工程配置,选择合适的镜像。
注意:
镜像需要集成与您的工程配置兼容的.Net运行环境,下文使用的.Net版本仅作演示。
- 拉取镜像。
docker pull mcr.microsoft.com/dotnet/runtime:2.1
说明:
mcr.microsoft.com/dotnet/runtime:2.1 镜像是微软提供的镜像,非IoT团队发布,且IoT团队未提供任何官方镜像。该镜像在此仅做示例,IoT团队对该镜像的安全性不作保证,强烈建议用户自己封装镜像!
- 编写 Dockerfile 制作镜像。
创建 Dockerfile,内容示例如下(具体可参考编写高效的Dockerfile )。
须知:
下面提供了ModuleSDK-Demo镜像构建样例,仅作示例展示,请按需修改。
# 基础镜像来源 FROM mcr.microsoft.com/dotnet/runtime:2.1 # 指定工作目录 WORKDIR /app # 复制工程二进制文件和相关文件(即项目构建发布的产物) COPY ModuleSDK-Demo/ /app ENTRYPOINT ["dotnet", "ModuleSDK-Demo.dll"]
- 构建镜像
docker build -t modulesdk-demo:1.0.0 -f Dockerfile .
- 查看打包完成的镜像
docker images
可以看到modulesdk-demo这个镜像已经制作完成。REPOSITORY TAG IMAGE ID CREATED SIZE modulesdk-demo 1.0.0 85ed3c3dc738 8 minutes ago 182MB
- 搜索基础镜像。
- 镜像上传
- 上传镜像
镜像上传需要使用镜像容器服务(SWR),首先需要开通容器镜像服务(SWR)。开通及使用请参照容器镜像服务(SWR)。
- 获取 SWR 登录指令
获取登录指令请参照获取指令。
说明:
访问密钥即AK/SK(Access Key ID/Secret Access Key),获取的AK/SK将用于登录。
- 登录 SWR 仓库
docker login -u [区域项目名]@[AK] -p [登录密钥] [镜像仓库地址]
可以直接从控制台获取登录命令,如下图。
说明:
镜像仓库地址 = swr.区域项目名称.myhuaweicloud.com
例如,华北-北京一对应的镜像仓库地址为:swr.cn-north-1.myhuaweicloud.com
- 修改镜像所属组织
docker tag [OPTIONS] [镜像名:版本号] [镜像仓库地址/所属组织/镜像名:版本号]
例如:
docker tag modulesdk-demo:1.0.0 swr.cn-north-4.myhuaweicloud.com/iotedge/modulesdk-demo:1.0.0
- 上传镜像
docker push [镜像仓库地址/所属组织/镜像名:版本号]
例如:docker push swr.cn-north-4.myhuaweicloud.com/iotedge/modulesdk-demo:1.0.0
- 在我的镜像查看上传结果
- 上传镜像后请在 SWR 将镜像设置为公开。
编辑镜像:
设置为公开:
注意:
这一步很重要,关系到后面能否正常部署应用。
- 上传镜像
插件包打包
- 插件包制作
- 插件包格式要求
插件包仅支持.tar.gz 、.tar或者 .zip格式。
插件包结构如下:
ModuleSDK-Demo.zip
├── ModuleSDK-Demo.*** // 可执行文件
├── ***.dll // 外部库文件,在构建发布时产生,可能会有多个
├── start.sh // 启动脚本 必须文件 当前不提供参数方式启动
└── stop.sh // 停止脚本 非必须
说明:
ModuleSDK-Demo.*** 为可执行文件,类型可能为.dll或.exe,取决于您的工程发布配置。下文将以ModuleSDK-Demo.dll为例。
- 添加启动脚本
在可执行文件ModuleSDK-Demo.dll的同一目录下创建启动脚本start.sh,内容示例如下,可根据您的需要进行修改。
function log(){ echo "`date "+%Y-%m-%d %T"`: $1" } log "[INFO] start execut process." pwd dotnet ModuleSDK-Demo.dll > ModuleSDK_demo_running.log 2>&1
- 打包插件包
压缩文件得到ModuleSDK-Demo.zip。
- 插件包格式要求
- 插件包上传
- 开通对象存储服务OBS
进程包上传方式需要开通对象存储服务OBS,请参考对象存储服务 OBS_快速入门
- 上传进程包
上传方式请参照对象存储服务(OBS)。
注意:
请设置桶策略为【公开读】,如未设置请前往“OBS首页 > 单击桶ID > 访问权限控制 > 桶策略中设置”。
- 开通对象存储服务OBS