打包部署
本文将详细介绍平台打包及部署.
打包
驱动打包就是将开发完成的程序打包为可以在平台部署的驱动. 平台自身支持运行在 windows
、linux
和 macOS
系统中, 并且支持 x86
和 arm
平台.
在 windows
系统中平台服务和驱动程序都是直接运行在操作系统中, 而在 linux
系统中是以 容器
的方式运行, 平台中的每个服务和驱动程序都是一个独立的容器, 所以针对不同的操作系统打包方式也不相同. 下面分别介绍在 windows
和 linux
系统中如何打包驱动, 对于不同平台只需要保证使用软件和库支持即可.
windows系统打包
在 windows
系统中, 驱动程序是直接运行在操作系统中, 所以需要将驱动程序打包. 具体打包步骤如下:
- 以
Dotnet
驱动为例打程序程序和相关资源打包为二进制
文件.项目执行下面的命令进行编译:
dotnet build
- 准备驱动配置文件
config.yaml
. 可以将config.yaml
放在netcore-driver.exe
文件相同的etc
目录下, 这样驱动在启动时会自动加载该配置文件.
注: config.yaml
中需要填写好 驱动ID
和 驱动名称
两个配置项, 参考驱动文档.
- 准备驱动安装配置文件
service.yml
. 在平台中安装驱动时, 需要提供一些驱动的基本信息, 例如: 版本号、驱动描述、端口号等. 这些信息需要在service.yml
中定义, 平台会根据该文件中的配置信息进行安装.service.yml
的具体格式如下:
Name: dotnetTestDriver
Description: dotnet测试驱动
Version: 4.0.0
ConfigType: config.yaml
GroupName: driver
Command: netcore-driver.exe
- 将所有资源打包为
zip
文件.
将 netcore-driver.exe
、config.yaml
、service.yml
和其它资源打包为 zip
文件, 平台会根据该文件进行安装. 建议打包后的 zip
文件结构如下:
linux系统打包
由于在 linux
系统中, 驱动程序是以 容器
的方式运行, 所以打包时需要先将驱动程序打包为 docker
镜像. 然后再将镜像文件和 service.yml
打包为 .tar.gz
压缩包. 具体打包步骤如下:
准备驱动配置文件
config.yaml
. 可以将config.yaml
放在netcore-driver.csproj
文件相同的etc
目录下, 这样在生成镜像时会根据如下Dockerfile拷贝到对应目录.info注:
config.yaml
中需要填写好驱动ID
和驱动名称
两个配置项, 参考驱动文档.编写Dockerfile,示例如下:
FROM mcr.microsoft.com/dotnet/runtime:5.0 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["netcore-driver.csproj", "."]
RUN dotnet restore "./netcore-driver.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "netcore-driver.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "netcore-driver.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
COPY etc /app/etc
ENTRYPOINT ["dotnet", "netcore-driver.dll"]
- 构建
docker
镜像.
使用上一步中的 Dockerfile
文件构建 docker
镜像, 具体命令如下:
docker build -t airiot/netcore-driver:v4.0.0 .
6 导出 docker
镜像并压缩.
docker save airiot/netcore-driver:v4.0.0 | gzip > netcore-driver.tar.gz
- 准备驱动安装配置文件
service.yml
. 该文件的格式与 windows系统打包 中的第三步中的service.yml
文件格式相似但又有区别. 具体格式如下:
# 必填项. 驱动名称
Name: netcore-driver
# 必填项. 例如: 1.0.0, 通常用镜像版本号一致
Version: 4.0.0
# 非必填项.
Description: 描述信息
# 必填项. 驱动固定为 driver、流程插件、算法服务为 server
GroupName: driver
# 容器端口映射类型, 非必填项. 如果驱动需要对外提供 rest 服务, 或暴露端口时, 需要填写该配置项.
# 可选项有 None Internal External
#
# None: 不暴露端口
# Internal: 只在平台内部暴露端口. 一般为驱动对外提供 rest 服务时, 将端口映射到网关上, 填写为 Internal 即可.
# External: 对外暴露端口. 一般为驱动为作 server 端, 需要对外暴露端口以供设备连接, 此时该端口会暴露在宿主机上, 填写为 External 即可.
Service: None
# 非必填项. 暴露的端口列表
#Ports:
# - Host: "8558" # 映射到宿主机的端口号, 如果不填写, 则会随机分配一个端口号
# Container: "8558" # 容器内部的端口号, 即驱动服务监听的端口号
# Protocol: "" # 协议类型, 可选项有 TCP UDP, 如果不填写, 则默认为 TCP
- 将所有资源打包为
gzip
文件. 将docker镜像
和service.yml
文件打包为gzip
文件. 打包命令如下:
tar cvf netcore-driver-v400.tar netcore-driver.tar.gz service.yml
gzip netcore-driver-v400.tar
打包后的 gzip
文件结构如下:
部署
将上一步骤中得到的驱动安装包通过 运维管理系统
上传到平台, 平台会自动解析并安装驱动. 安装成功后, 就可以在项目中使用该驱动了.
安装驱动
- 登录
运维管理系统
, 运维管理系统的默认登录地址为http://IP:13030/
, 将IP
换成平台地址即可. - 点击左侧菜单栏中的
服务管理
选项, 进入服务管理页面. - 点击页面右上角的
离线上传驱动
按钮, 选择上一步中得到的go-driver-example.tar.gz
文件, 点击确定
按钮, 平台会自动解析并安装驱动.
如果驱动安装失败, 可以在 运维管理系统
的 首页
中查看详细的日志信息.
不同版本的平台, 离线上传驱动
按扭的位置可能不同.
使用驱动
当驱动成功安装到平台后, 就可以在项目中使用该驱动了.
具体使用方法请参考 驱动管理.
注: 需要将运维服务的 InternetAccess 改为false, 才能读取本地仓库