创建Microservice码头工人图像
支持平台:Linux®、窗户®,macOS
这个例子展示了如何创建一个微服务Docker®的形象。微服务形象创建MATLAB®编译器SDK™提供一个HTTP/HTTPS端点来访问MATLAB代码。
将MATLAB函数打包到可部署的归档文件中,然后创建包含归档文件和最小值的Docker映像MATLAB运行时包中。然后可以在Docker中运行映像,并使用任何具有HTTP库的编程语言调用服务,包括MATLAB Production Server™客户端api。
对于想要合并MATLAB算法或Simulink的开发人员来说,这个选项是最好的®模拟大型应用程序中的服务,或提供同步请求-响应后端API服务。要创建包含独立应用程序的Docker映像,请参见将MATLAB独立应用程序打包到Docker映像中.
先决条件
确认您已经MATLAB编译器SDK安装在开发机器上。
通过键入命令,验证您已经在开发机器上安装和配置了Docker
[~,msg] = system('docker version')
在MATLAB命令窗口中。请注意
如果您正在使用WSL,请使用该命令
[~,msg] = system('wsl docker version')
代替。如果您没有安装Docker,请按照Docker网站上的说明安装和设置Docker。
docs.docker.com/engine/install/
要在Windows上构建微服务映像,必须在Windows子系统for Linux v2 (WSL2)上安装Docker Desktop或Docker。安装Docker Desktop,请参见
docs.docker.com/desktop/windows/install/
.有关如何在WSL2上安装Docker的说明,请参见
//www.ru-cchi.com/matlabcentral/answers/1758410-how-do-i-install-docker-on-wsl2
.
如果你使用的电脑没有连接到互联网,你必须下载MATLAB运行时从连接到Internet的计算机下载Linux安装程序,并将安装程序转移到脱机的计算机。然后执行命令
compiler.runtime.createInstallerDockerImage (filepath)
,在那里filepath
被传输的路径是MATLAB运行时安装程序存档。您可以从MathWorks网站下载安装程序。
//www.ru-cchi.com/2022世界杯八强谁会赢?products/compiler/matlab-runtime.html
创建MATLAB函数
在MATLAB中,检查您想要打包的MATLAB程序。
对于本例,编写一个名为mymagic.m
使用以下代码。
函数Y = mymagic(x) Y = magic(x);
在MATLAB命令提示符下,输入mymagic (5)
.
输出是一个5 × 5的神奇方阵。
Ans = 17 24 18 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
创建可部署归档
打包mymagic
函数放入可部署的存档中compiler.build.productionServerArchive
函数。
控件中指定其他选项compiler.build
使用名称-值参数命令。详情请参见compiler.build.productionServerArchive
.
mpsResults = compiler.build.productionServerArchive(“mymagic.m”,...“ArchiveName”,“magicarchive”,“详细”,“上”)
mpsResults =带有属性的结果:BuildType: 'productionServerArchive' Files: {'/home/mluser/Work/magicarchiveproductionServerArchive/magicarchive. properties:ctf'} IncludedSupportPackages: {} Options: [1×1 compiler.build.ProductionServerArchiveOptions]
的compiler.build.Results
对象mpsResults
包含有关生成类型、生成文件、包含的支持包和生成选项的信息。
构建完成后,该函数创建一个名为magicarchiveproductionServerArchive
在当前目录中存储可部署归档文件。
将Archive包到Microservice中码头工人图像
方法构建微服务Docker映像mpsResults
对象创建的。
控件中指定其他选项compiler.build
使用名称-值参数命令。详情请参见compiler.package.microserviceDockerImage
.
compiler.package.microserviceDockerImage (mpsResults“ImageName”,“micro-magic”)
该函数在名为micro-magicmicroserviceDockerImage
在您当前的工作目录中:
applicationFilesForMATLABCompiler / magicarchive.ctf
—可部署归档文件。Dockerfile
-指定Docker运行时选项的Docker文件。GettingStarted.txt
—包含部署信息的文本文件。
测试码头工人图像
请注意
如果Docker在WSL2会话中运行,请使用WSL2运行以下命令。
在系统命令窗口中,验证您的
micro-magic
image在您的Docker映像列表中。码头工人的图片
库标签图像ID CREATED SIZE micro-magic latest 4401fa2bc057 23 seconds ago 1.42GB matlabruntime/r2022 b1.42GB
运行
micro-magic
Docker中的微服务映像。运行——rm -p 9900:9910 micro-magic
端口9910是Docker容器中微服务公开的默认端口。可以将它映射到主机上的任何可用端口。对于本例,它映射到端口9900。
您可以在Docker命令中指定其他选项。有关选项的完整列表,请参见微服务命令参数.
一旦微服务容器在Docker中运行,你可以通过在浏览器中打开以下URL查看服务的状态:
http://主机名: 9900 / api /健康
请注意
使用
本地主机
如果Docker运行在同一台机器上,则作为主机名。如果该服务已准备好接收请求,您将看到以下消息:
“状态:好吧”
测试正在运行的服务。对于Linux终端,请使用
旋度
命令发送带有输入参数的JSON查询4
通过端口9900连接到服务。有关构造JSON请求的更多信息,请参见MATLAB数据类型的JSON表示(MATLAB生产服务器).curl -v -H Content-Type:application/json -d '{"nargout":1,"rhs":[4]}' "http://
主机名
: 9900 / magicarchive / mymagic”输出为:
[{{“韩”:“mwdata”:[16、5、9、4、2、11、7日14日3日,10日,6日,15日,13日,8日,12日,1],“mwsize”:(4,4)“mwtype”:“替身”}]}
请注意
使用
旋度
在Windows上,使用以下语法:curl - v - h - type: application / json - d”{\“nargout \”:1,\“rhs \”:[4]}“http://”
主机名
: 9900 / magicarchive / mymagic”要停止服务,使用以下命令显示容器id。
码头工人ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES df7710d69bf0 micromagic "/opt/matlabruntime/…" 6分钟前Up 6分钟0.0.0.0:9900->9910/tcp epic_herschel . Up 6分钟
使用指定的容器id停止服务。
Docker停止df7710d69bf0
分享码头工人图像
您可以以各种方式共享Docker映像。
将映像推到Docker中央注册中心DockerHub或您的私有注册中心。这是最常见的工作流程。
将映像保存为tar存档并与他人共享。此工作流适合于即时测试。
有关将映像推送到DockerHub或您的私有注册表的详细信息,请参阅Docker文档。
保存码头工人Tar档案图像
要将Docker映像保存为tar归档文件,请打开一个系统命令窗口,导航到Docker上下文文件夹,并键入以下命令。
Docker保存micro-magic -o micro-magic.tar
这个命令创建一个名为micro-magic.tar
在当前文件夹中。设置适当的权限(例如,using修改文件权限
),然后与其他用户共享tarball。
负载码头工人图片来自Tar Archive
在最终用户机器上加载tarball中包含的映像。
Docker加载——输入micro-magic.tar
验证图像是否已加载。
码头工人的图片
运行码头工人图像
运行——rm -p 9900:9910 micro-magic
另请参阅
compiler.package.microserviceDockerImage
|compiler.build.productionServerArchive
相关的话题
- 微服务命令参数
- 为MATLAB生产服务器创建可部署的存档
- 客户端编程(MATLAB生产服务器)
- MATLAB数据类型的JSON表示(MATLAB生产服务器)
- JSON中的MATLAB函数签名
- 将MATLAB独立应用程序打包到Docker映像中