主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

compiler.build.productionServerArchive

创建存档以部署到 MATLAB Production ServerDocker

说明

compiler.build.productionServerArchive(FunctionFiles) 使用 FunctionFiles 指定的 MATLAB® 函数创建可部署的存档。

示例

compiler.build.productionServerArchive(FunctionFiles,Name,Value) 使用一个或多个名称值参量指定附加选项,从而创建一个可部署的存档。选项包括存档名称、JSON 函数签名和输出目录。

示例

compiler.build.productionServerArchive(opts) 使用 compiler.build.ProductionServerArchiveOptions 对象 opts 指定选项,创建可部署的存档。您不能使用名称-值参量指定任何其他选项。

示例

results = compiler.build.productionServerArchive(___) 使用前面语法中的任意输入参量组合将构建信息作为 compiler.build.Results 对象返回。构建信息包括构建类型、编译存档的路径和构建选项。

示例

示例

全部折叠

创建可部署的服务器存档。

在 MATLAB 中,定位您想要作为存档部署的 MATLAB 函数。对于此示例,使用位于文件 magicsquare.mmatlabroot\extern\examples\compiler

appFile = which('magicsquare.m');

使用 compiler.build.productionServerArchive 命令构建生产服务器存档。

compiler.build.productionServerArchive(appFile);

此语法在当前工作目录中名为 mymagicproductionServerArchive 的文件夹中生成以下文件:

  • includedSupportPackages.txt - 列出存档中包含的所有支持文件的文本文件。

  • mymagic.ctf - 可部署的生产服务器存档文件。

  • mccExcludedFiles.log - 包含应用程序中未包含的任何工具箱函数列表的日志文件。有关不支持的函数的信息,请参阅 MATLAB Compiler 限制

  • readme.txt - 自述文件包含有关部署前提条件的信息以及要打包部署的文件列表。

  • requiredMCRProducts.txt - 包含 MATLAB Runtime 运行应用程序所需产品的产品 ID 的文本文件。

创建生产服务器存档并使用名称-值参量对其进行自定义。

对于此示例,使用位于 matlabroot\extern\examples\compiler 中的文件 addmatrix.msubtractmatrix.mat

addFile = fullfile(matlabroot,'extern','examples','compilersdk','c_cpp','matrix','addmatrix.m');
subFile = fullfile(matlabroot,'extern','examples','compilersdk','c_cpp','matrix','subtractmatrix.m');

使用 compiler.build.productionServerArchive 命令构建生产服务器存档。使用名称-值参量指定存档名称并启用详尽输出。

compiler.build.productionServerArchive({addFile,subFile}, ...
'ArchiveName','MatrixArchive', ...
'Verbose','on');

此语法在当前工作目录中名为 MatrixArchiveproductionServerArchive 的文件夹中生成以下文件:

  • includedSupportPackages.txt - 列出存档中包含的所有支持文件的文本文件。

  • MatrixArchive.ctf - 可部署的生产服务器存档文件。

  • mccExcludedFiles.log - 包含应用程序中未包含的任何工具箱函数列表的日志文件。有关不支持的函数的信息,请参阅 MATLAB Compiler 限制

  • readme.txt - 自述文件包含有关部署前提条件的信息以及要打包部署的文件列表。

  • requiredMCRProducts.txt - 包含 MATLAB Runtime 运行应用程序所需产品的产品 ID 的文本文件。

使用 compiler.build.ProductionServerArchiveOptions 对象自定义多个生产服务器存档。

对于此示例,使用位于文件 hello.mmatlabroot\extern\examples\compiler

functionFile = which('hello.m');

创建一个 ProductionServerArchiveOptions 对象。使用名称-值参量指定一个公共输出目录,禁用数据文件的自动包含,并启用详尽输出。

opts = compiler.build.ProductionServerArchiveOptions(functionFile, ...    
'OutputDir','D:\Documents\MATLAB\work\ProductionServerBatch', ...
'AutoDetectDataFiles','off', ...
'Verbose','on')
opts = 

  ProductionServerArchiveOptions with properties:

              ArchiveName: 'hello'
            FunctionFiles: {'C:\Program Files\MATLAB\R2024b\extern\examples\compiler\hello.m'}
       FunctionSignatures: ''
               RoutesFile: ''
          AdditionalFiles: {}
      AutoDetectDataFiles: off
    ExternalEncryptionKey: [0×0 struct]
         ObfuscateArchive: off
          SecretsManifest: ''
          SupportPackages: {'autodetect'}
                  Verbose: on
                OutputDir: 'D:\Documents\MATLAB\work\ProductionServerBatch'

使用 ProductionServerArchiveOptions 对象构建生产服务器存档。

compiler.build.productionServerArchive(opts);

要使用具有相同选项的函数文件 houdini.m 进行编译,请在再次运行构建函数之前使用点符号修改现有 ProductionServerArchiveOptions 对象的 FunctionFiles

opts.FunctionFiles = which('houdini.m');
compiler.build.productionServerArchive(opts);

通过修改 FunctionFiles 参量并重新编译,您可以使用相同的选项对象编译多个存档。

使用在 Linux® 系统上构建生产服务器存档的结果创建微服务 Docker® 映像。

在您的系统上安装并配置 Docker

使用 magicsquare.m 创建生产服务器存档并将构建结果保存到 compiler.build.Results 对象。

appFile = which('magicsquare.m');
buildResults = compiler.build.productionServerArchive(appFile);

Results 对象作为输入传递给 compiler.package.microserviceDockerImage 函数来构建 Docker 映像。

compiler.package.microserviceDockerImage(buildResults);

该函数会在当前工作目录中名为 magicsquaremicroserviceDockerImage 的文件夹中生成以下文件:

  • applicationFilesForMATLABCompiler/magicsquare.ctf - 可部署的存档文件。

  • Dockerfile - 指定 Docker Runtime 选项的 Docker 文件。

  • GettingStarted.txt - 包含部署信息的文本文件。

有关详细信息,请参阅创建微服务 Docker 镜像

创建生产服务器存档并将有关构建类型、存档文件、包含的支持包和构建选项的信息保存到 compiler.build.Results 对象中。

使用文件 magicsquare.m 进行编译。

results = compiler.build.productionServerArchive('magicsquare.m')
results = 

  Results with properties:

                  BuildType: 'productionServerArchive'
                      Files: {'D:\Documents\MATLAB\work\magicsquareproductionServerArchive\magicsquare.ctf'}
    IncludedSupportPackages: {}
                    Options: [1×1 compiler.build.ProductionServerArchiveOptions]

Files 属性包含可部署存档文件 magicsquare.ctf 的路径。

输入参数

全部折叠

实现 MATLAB 函数的文件,指定为字符向量、字符串标量、字符串数组或字符向量元胞数组。文件路径可以是相对于当前工作目录的路径,也可以是绝对路径。文件必须具有以下扩展名之一:.m.p.mlx.mexa64

示例: ["myfunc1.m","myfunc2.m"]

数据类型: char | string | cell

生产服务器存档构建选项,指定为 compiler.build.ProductionServerArchiveOptions 对象。

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'Verbose','on'

生产服务器存档中要包含的文件和文件夹列表。

示例: 'AdditionalFiles','MyFile.txt'

数据类型: char | string | cellstr vector

可部署存档的名称,指定为字符向量或字符串标量。生成的存档的默认名称是 FunctionFiles 参量的第一个条目。

示例: 'ArchiveName','MyMagic'

数据类型: char | string

标志自动包含数据文件,指定为 'on''off',或者指定为数字或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,而 'off' 等效于 false。因此,您可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的开/关逻辑值。

  • 如果将此属性设置为 'on',则您作为某些函数(例如 loadfopen)的输入提供的数据文件将自动包含在生产服务器存档中。

  • 如果将此属性设置为 'off',则必须使用 AdditionalFiles 属性将数据文件添加到存档中。

示例: 'AutoDetectDataFiles','off'

数据类型: logical

自 R2024b 起

外部 AES 加密密钥和 MEX 密钥加载程序文件的路径,指定为标量结构,具有恰好两行字符向量或字符串标量字段,分别名为 EncryptionKeyFileRuntimeKeyLoaderFile。两个结构体字段都是必需的。文件路径可以是相对于当前工作目录的路径,也可以是绝对路径。

例如,使用 struct encrypt.key 将加密密钥指定为 loader.mexw64 并将加载程序文件指定为 keyValueStruct

keyValueStruct.EncryptionKeyFile='encrypt.key'; keyValueStruct.RuntimeKeyLoaderFile='loader.mexw64'

加密密钥文件必须采用以下受支持的格式之一:

  • 二进制 256 位 AES 密钥,文件大小为 32 字节

  • 十六进制编码的 AES 密钥,文件大小为 64 字节

MEX 文件加载程序在运行时检索解密密钥,并且必须是具有以下参量的接口:

  • prhs[0] - 输入,指定为静态值 'get' 的字符数组

  • prhs[1] - 输入,指定为 CTF 组件 UUID 的字符数组

  • plhs[0] - 输出,32 字节 UINT8 数字数组或 64 字节十六进制编码字符数组,具体取决于密钥格式

请勿在多个 CTF 之间共享同一个密钥。

示例: 'ExternalEncryptionKey',keyValueStruct

数据类型: struct

详细说明 FunctionFiles 中列出的所有函数签名的 JSON 文件的路径,指定为字符向量或字符串标量。有关指定函数签名的信息,请参阅JSON 中的 MATLAB 函数签名 (MATLAB Production Server)

示例: 'FunctionSignatures','D:\Documents\MATLAB\work\magicapp\signatures.json'

数据类型: char | string

用于混淆处理可部署存档的标志,指定为 'on''off',或者指定为数字或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,而 'off' 等效于 false。因此,您可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的开/关逻辑值。

  • 如果将此属性设置为 'on',则可部署存档中的文件夹结构和文件名将对最终用户进行混淆,并且 MATLAB 文件中包含的用户代码和数据将放入存档内的用户包中。此外,所有 .m 文件在打包之前都会转换为 P 文件。此选项等效于使用指定 -j-smcc

  • 如果将此属性设置为 'off',则可部署存档不会被混淆。这是默认行为。

示例: 'ObfuscateArchive','on'

数据类型: logical

保存构建文件的输出目录的路径,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。

构建文件夹的默认名称是存档名称加上 productionServerArchive

示例: 'OutputDir','D:\Documents\MATLAB\work\MyMagicproductionServerArchive'

自 R2024a 起

指定服务器上的自定义 URL 路由的 JSON 文件的路径,指定为字符向量或字符串标量。

示例: RoutesFile,'routes.json'

数据类型: char | string

自 R2024b 起

机密清单 JSON 文件的路径,该文件指定要嵌入可部署存档中的机密密钥,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。

如果您的 MATLAB 代码调用 getSecretgetSecretMetadataisSecret 函数,您必须在 JSON 机密清单文件中指定要嵌入可部署存档的密钥。如果您的代码调用 getSecret 并且您未指定 SecretsManifest 选项,MATLAB Compiler™ 会发出警告并在名为 <component_name>_secrets_manifest.json 的输出文件夹中生成一个模板 JSON 文件。通过在嵌入字段中指定密钥名称来修改此文件。

setSecret 函数不可部署。要将机密嵌入可部署存档中,您必须在构建存档之前在 MATLAB 中调用 setSecret

有关使用密钥进行部署的更多信息,请参阅处理已部署应用程序中的敏感信息

示例: 'SecretsManifest','D:\Documents\MATLAB\work\mycomponent\mycomponent_secrets_manifest.json'

数据类型: char | string

要包含的支持包,指定为以下选项之一:

  • 'autodetect'(默认)- 依赖关系分析过程会自动检测并包含所需的支持包。

  • 'none' - 不包括任何支持包。使用此选项可能会导致运行时错误。

  • 字符串标量、字符向量或字符向量元胞数组- 仅包含指定的支持包。要列出已安装的支持包或特定文件使用的支持包,请参阅 compiler.codetools.deployableSupportPackages

示例: 'SupportPackages',{'Deep Learning Toolbox Converter for TensorFlow Models','Deep Learning Toolbox Model for Places365-GoogLeNet Network'}

数据类型: char | string | cell

构建详细程度,指定为 'on''off',或者指定为数字或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,而 'off' 等效于 false。因此,您可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的开/关逻辑值。

  • 如果将此属性设置为 'on',则 MATLAB 命令行窗口将显示进度信息,指示构建过程中的编译器输出。

  • 如果将此属性设置为 'off',则命令行窗口不会显示进度信息。

示例: 'Verbose','off'

数据类型: logical

输出参量

全部折叠

编译结果,以 compiler.build.Results 对象形式返回。Results 对象包括:

  • 编译类型,即 'productionServerArchive'

  • 可部署存档文件的路径

  • 包含的支持包的列表

  • 编译选项,指定为 ProductionServerArchiveOptions 对象

限制

  • 在 R2024a 之前的版本中,compiler.build.ProductionServerArchive 不支持打包特定于存档的路由 JSON 文件以将 URL 请求映射到存档内的 Web 处理程序函数。在 routes-file (MATLAB Production Server) 配置属性指定的 JSON 文件中定义路由,或者使用 mcc 将路由 JSON 文件打包到存档中。

版本历史记录

在 R2020b 中推出