打包 C/C++ 微服务
本节以使用 C 语言开发的微服务为例,介绍微服务的打包方法。
操作步骤
SylixOS 运行环境
步骤 1:启动打包向导
在 HelloVSOA
工程上单击右键,选择 Container > ECS Package,启动打包向导。
步骤 2:配置打包参数
在打包向导界面中,参考表 1 完成参数配置,单击 Next。
表 1 配置参数说明
参数 | 是否必选 | 说明 |
---|---|---|
Local Bundle | 是 | 为创建容器指定 Bundle 所在的临时目录位置,支持自定义,容器打包过程中会在该目录下生成临时目录与文件 |
Bundle Arch | 否 | 默认为原来 template 的架构类型。若需修改,单击 Create new template 选择架构类型。若与编译的可执行文件架构不一致,则程序无法正常运行 |
Create new template | 否 | 表示是否在创建新的 Bundle 模板。首次创建容器时,应当勾选;若非首次创建,并且 Local Bundle 指定了一个已存在模板的 Bundle 路径,则该选项可不勾选 |
Multi libraries | 是 | 默认勾选 BASIC,会在 config.json 中添加容器运行的基础 lib 库的 mount 映射。VSOA 、JSRE 、QT 和 SSHD 选项,表示是否在 config.json 中添加 VSOA 、JSRE 、QT 和 SSHD 的宿主机的 mount 映射。配置 sshd 时,需注意开发使用的 RealEvo-IDE 需更新到 6.1.0 版本及以上。若提示缺失秘钥,详见 创建容器 Bundle 启动 ssh 服务流程 |
Parameter | 否 | 用于设置所创建容器的默认启动参数,容器启动时会默认执行该启动参数 |
说明:
- 一个容器镜像解压后所得到的 "根目录" + "config.json" 文件的组合叫做 Bundle。
- 容器的 "根目录" 是指容器内隔离的文件系统根目录结构。
步骤 3:选择打包文件
如下图进入打包导出界面。
在打包文件导出界面的右侧,选择需要打包入容器镜像包的目标路径(该范例为如图所示 "/rootfs/apps" 路径),在左侧工程目录中,双击需要打包到容器镜像包的文件(如
HelloVSOA
可执行文件),即可将文件导出到容器镜像包的目标路径中。说明:
部署时,应选择 strip 目录内的可执行文件,该文件裁剪了不必要的调试信息,去除了符号信息。在右侧目标路径中,选中容器镜像内的
config.json
配额文件,单击右键选择 Edit ,可以编辑容器默认配额,容器配额的详细内容可见 ECS 容器配置。导出文件后,单击 Next, 进入打包目标界面。
步骤 4:完成打包操作
在打包目标界面中,参考表 2 完成 Tarball Path,TarballNmae 和 Name 设置。
表 2 打包参数说明
参数 是否必选 说明 Tarball Path 是 容器镜像包的目标存放路径 TarballName 是 容器镜像包的文件名称。该文件名称必须以 .tar 结尾 Name 是 容器镜像的名称。该名称将显示在 ECSM 等管理平台中,而非镜像包的文件名 单击 Finish 进行打包。如下图所示,提示 ECS Export Success 则表示打包成功。此时在 Tarball Path 对应目录下已打出容器镜像包,单击确定进入容器镜像包推送界面。
在容器镜像推送界面,参考表 3 完成 Remote Url,Image Path,User Name 和 Password 设置。
表 3 容器仓库参数说明
参数 是否必选 说明 Remote Url 是 容器镜像仓库地址,如果是上传到 ECSM 仓库,默认端口是 3000 Image Patch 是 容器镜像路径,默认设置不需要手动填写 User Name 否 容器镜像仓库的用户名,没有可不填 Password 否 容器镜像仓库的密码,没有可不填 单击 OK 进行容器镜像包上传。如下图所示,提示 Push Hello VSOA:latest success 则表示上传成功。
Linux 运行环境
步骤 1:获取打包向导脚本
执行如下命令,将 docker 打包向导脚本 下载至本地,并赋予其可执行权限。
[acosail@AcoSail2]~$ wget https://gitea.com/AcoSail/DockerImageWizard/raw/branch/main/docker_pkg_wizard.sh
[acosail@AcoSail2]~$ chmod +x docker_pkg_wizard.sh
步骤 2:执行脚本
执行如下命令,以 root 权限启动 docker 打包向导脚本。
[acosail@AcoSail2]~$ sudo ./docker_pkg_wizard.sh /path/to/project/position
说明:
/path/to/project/position 是指包含微服务可执行程序的路径。
步骤 3:配置打包参数
在打包界面中选择微服务程序的类型,此处以选择“位置服务程序”为例进行介绍。
选择需要打包的文件(如 linux64-build/position),按回车键确认。
确定项目是否使用了三方库(包含 VSOA 在内)。
输入所使用的三方库的绝对路径(精确到具体的库文件,例如本项目使用了 VSOA 的 json 解析库,则填写
/path/to/vsoa/Release/libvsoa-json.so
),如果使用了多个库,则每次输入一个,按回车键添加之后可填写下一个,当所有三方库都添加完成之后,选中 结束 完成添加。确定该微服务对外提供的端口号,默认为 3000。
填写该微服务详细的启动参数。
说明:
启动参数与前面设置的项目路径和打包文件有关。例如前面设置的项目路径为
/path/to/project/position/
,打包的可执行文件为linux64-build/position
,那么相对于路径而言,执行该可执行程序的启动参数就是linux64-build/position
。
步骤 4:完成打包操作
完成启动参数设置后,按回车键开始打包,当命令行中显示 docker image create success! the image file is saved in /etc/vsoa
时,说明打包已经成功,此时可以在 /etc/vsoa
中看到对应的镜像包。具体镜像包说明如下:
docker_service_rpc.tar 服务端程序默认镜像包
docker_client_rpc.tar 客户端程序默认镜像包
docker_position_rpc.tar 位置服务程序默认镜像包