打包 C/C++ 微服务

更新时间:
2024-06-03
下载文档

打包 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:选择打包文件

  1. 如下图进入打包导出界面。

  2. 在打包文件导出界面的右侧,选择需要打包入容器镜像包的目标路径(该范例为如图所示 "/rootfs/apps" 路径),在左侧工程目录中,双击需要打包到容器镜像包的文件(如 HelloVSOA 可执行文件),即可将文件导出到容器镜像包的目标路径中。

    说明:
    部署时,应选择 strip 目录内的可执行文件,该文件裁剪了不必要的调试信息,去除了符号信息。

  3. 在右侧目标路径中,选中容器镜像内的 config.json 配额文件,单击右键选择 Edit ,可以编辑容器默认配额,容器配额的详细内容可见 ECS 容器配置

  4. 导出文件后,单击 Next, 进入打包目标界面。

步骤 4:完成打包操作

  1. 在打包目标界面中,参考表 2 完成 Tarball PathTarballNmaeName 设置。

    表 2 打包参数说明

    参数是否必选说明
    Tarball Path容器镜像包的目标存放路径
    TarballName容器镜像包的文件名称。该文件名称必须以 .tar 结尾
    Name容器镜像的名称。该名称将显示在 ECSM 等管理平台中,而非镜像包的文件名
  2. 单击 Finish 进行打包。如下图所示,提示 ECS Export Success 则表示打包成功。此时在 Tarball Path 对应目录下已打出容器镜像包,单击确定进入容器镜像包推送界面。

  3. 在容器镜像推送界面,参考表 3 完成 Remote UrlImage PathUser NamePassword 设置。

    表 3 容器仓库参数说明

    参数是否必选说明
    Remote Url容器镜像仓库地址,如果是上传到 ECSM 仓库,默认端口是 3000
    Image Patch容器镜像路径,默认设置不需要手动填写
    User Name容器镜像仓库的用户名,没有可不填
    Password容器镜像仓库的密码,没有可不填
  4. 单击 OK 进行容器镜像包上传。如下图所示,提示 Push Hello VSOA:latest success 则表示上传成功。

Linux 运行环境

步骤 1:获取打包向导脚本

执行如下命令,将 docker 打包向导脚本open in new window 下载至本地,并赋予其可执行权限。

[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:配置打包参数

  1. 在打包界面中选择微服务程序的类型,此处以选择“位置服务程序”为例进行介绍。

  2. 选择需要打包的文件(如 linux64-build/position),按回车键确认。

  3. 确定项目是否使用了三方库(包含 VSOA 在内)。

  4. 输入所使用的三方库的绝对路径(精确到具体的库文件,例如本项目使用了 VSOA 的 json 解析库,则填写 /path/to/vsoa/Release/libvsoa-json.so),如果使用了多个库,则每次输入一个,按回车键添加之后可填写下一个,当所有三方库都添加完成之后,选中 结束 完成添加。

  5. 确定该微服务对外提供的端口号,默认为 3000。

  6. 填写该微服务详细的启动参数。

    说明:

    启动参数与前面设置的项目路径和打包文件有关。例如前面设置的项目路径为 /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 位置服务程序默认镜像包

文档内容是否对您有所帮助?
有帮助
没帮助