在 Microsoft Azure 上运行使用 MATLAB Compiler SDK 创建的微服务
此示例演示了如何在 Microsoft® Azure® 上运行使用 MATLAB® Compiler SDK™ 创建的微服务。
示例文件列表
simpInterest.m
要下载示例文件,请在 MATLAB 命令行窗口中键入以下内容。
openExample("compilersdk/AzureMicroserviceExample", workDir=pwd)
前提条件
确认开发计算机上已安装 MATLAB Compiler SDK(R2022a 或更高版本)。
通过在 MATLAB 命令行窗口中键入
[~,msg] = system('docker version'),验证您是否已在开发计算机上安装并配置了 Docker®。
注意:如果您使用的是 WSL,请改为键入 [~,msg] = system('wsl docker version')。
如果您尚未安装 Docker,请按照 Docker 网站上的说明安装并设置 Docker。请参阅 https://docs.docker.com/engine/install/。
要在 Windows® 上构建微服务镜像,您必须安装 Docker Desktop 或在 Windows Subsystem for Linux v2 (WSL2) 上安装 Docker。
要安装 Docker 桌面,请参阅 https://docs.docker.com/desktop/setup/install/windows-install/。
要在 WSL2 上安装 Docker,请参阅 https://www.mathworks.com/matlabcentral/answers/1758410-how-do-i-install-docker-on-wsl2。
请确认您已拥有 MATLAB 运行时安装程序。如果没有,您可以从 MathWorks® 网站下载安装程序:https ://www.mathworks.com/products/compiler/matlab-runtime.html。
验证您是否拥有 Microsoft Azure 帐户。
验证您是否已安装 Azure 命令行界面 (CLI)。有关详细信息,请参阅:https: //learn.microsoft.com/en-us/cli/azure/install-azure-cli。
创建 MATLAB 函数
从 MATLAB 桌面创建一个 MATLAB 函数。对于此示例,使用以下代码编写一个名为 simpInterest.m 的函数。
function i = simpInterest(p,r,t) i = p * (1 + (r * t)) - p; end
创建可部署存档
使用 compiler.build.productionServerArchive 函数将 simpInterest.m 函数打包成可部署存档。
results = compiler.build.productionServerArchive("simpInterest.m","ArchiveName","financetools","Verbose","on")
将可部署存档打包到微服务 Docker 映像
使用您创建的 results 对象将可部署存档打包到微服务 Docker 映像中。
compiler.package.microserviceDockerImage(results,"ImageName","financetools")
该函数会在名为 financetoolsmicroserviceDockerImage 的文件夹中生成以下文件:
applicationFilesForMATLABCompiler/financetools.ctf- 可部署存档文件。Dockerfile- 指定运行时选项的 Docker 文件。GettingStarted.txt- 包含部署信息的文本文件。
输入以下命令验证 financetools 图像是否已创建:
docker images
有关详细信息,请参阅 MATLABCompiler SDK创建微服务 Docker 镜像。
创建 Azure 容器注册表
导航到 https://portal.azure.com/并在搜索栏中搜索
container registry。从结果中选择容器注册表服务。
点击创建新注册表。完成工程详情和实例详情。
工程详细信息
订阅:从下拉菜单中选择您的订阅。
资源组:使用现有资源组或创建一个新的资源组。
实例详细信息
注册表名称:提供一个唯一的名称。本示例使用:
matlab位置:选择您想要的位置。
可用区域:保持未选中状态或选中已启用。
SKU:选择标准。
在此示例中,注册表名为 matlab。
将微服务 Docker 的镜像上传到 Azure 容器注册表
打开命令行窗口并使用命令登录到您的 Azure 帐户
az login
这将打开一个浏览器窗口供您登录和验证。登录 Azure 门户后,您需要使用以下命令登录到容器注册表:
az login acr --name <container_registry_name>
代替 <container_registry_name> 使用您的容器注册表的名称。
使用以下命令将微服务 Docker 的镜像标记到您的容器注册表:
docker tag financetools matlab.azurecr.io/financetools:1.0
使用以下方式上传微服务 Docker 的镜像:
docker push matlab.azurecr.io/financetools:1.0
将微服务 Docker 的镜像上传到云端需要几分钟时间。完成后,您的 Docker 镜像将作为一个仓库显示在 Azure 容器注册表中。
运行微服务 Docker 镜像
您可以使用 Azure 上的多种不同选项来运行微服务 Docker 映像。您可以将其作为以下项运行:
Azure 容器实例
Azure Kubernetes® 服务
适用于容器的 Azure Web 应用
Azure Batch
在此示例中,使用 Azure 容器实例选项,它允许您运行单个容器。
注意:您可能必须在 Azure 容器注册表的 IAM 部分中启用管理员访问权限才能运行该容器。
要将其作为 Azure 容器实例运行:
从 Azure 仪表板创建一个新的 Azure 容器实例。
在基础信息选项卡中,填写工程详情和容器详情。
工程详细信息
订阅:适当选择
资源组:适当选择
容器详细信息
容器名称:
financetools区域:使用默认或适当选择
可用性:使用默认或适当选择
SKU:
Standard或适当选择图像来源:选择 Azure 容器注册表
注册表:
<container-registry-name>图像:
financetools图像标记:
1.0OS 类型:使用默认值
尺寸:使用默认或适当更改尺寸
在“网络”选项卡中填写以下详细信息:
网络类型:
PublicDNS 名称标签:
financetoolsDNS 名称标签范围重用:选择
Tenant端口:类型
9910端口协议:选择
TCP点击“审核 + 创建”。
点击“创建”以创建 Azure 容器实例。
部署 Azure 容器实例后,您可以使用其完全限定域名 (FQDN) 向该实例发出请求,您可以在资源页面上找到该域名。
向 Azure 容器实例中运行的微服务发出请求
您可以使用命令行工具或 UI(例如 Postman)向微服务发出请求。以 JSON 格式传入本金、利息和时间 3 个输入变量,并接收以 JSON 格式结果表示的单利金额。
POST /financetools/simpInterest HTTP/1.1
Host: financetools.b9cshvg0azdbb6g6.eastus.azurecontainer.io:9910
Content-Type: application/json
Content-Length: 42
{"nargout": 1, "rhs": [21000, 0.043, 12] }
The format of the host URI is: FQDN:port/container_image_name/matlab_function_name
To make a request using cURL:
curl --location 'financetools.b9cshvg0azdbb6g6.eastus.azurecontainer.io:9910/financetools/simpInterest' \
--header 'Content-Type: application/json' \
--data '{"nargout": 1, "rhs": [21000, 0.043, 12] }'