Programmatically add toolbox within MATLAB docker container.
35 ビュー (過去 30 日間)
古いコメントを表示
A MATLAB script is running in the cloud as a docker container.
Steps that I would like the script to do:
- Fetch a .mltbx file from a REST API.
- Remove previously installed toolboxes
- Install new toolbox .
- Run a function from this toolbox.
For step 2 and 3 I am using these functions.
'matlab.addons.toolbox.installedToolboxes'
'matlab.addons.toolbox.uninstallToolbox(toolbox)'
'matlab.addons.toolbox.installToolbox(toolbox)'
This works when I run the script locally but when I package it as a docker container using MATLAB compiler and ran it in the cloud the following error is thrown for the installedToolboxes function.
Unable to resolve the name 'matlab.addons.toolbox.installedToolboxes'.
'matlab.addons.toolbox.installedToolboxes' was excluded from packaging for the MATLAB Runtime environment according to the MATLAB Compiler license.
Have the application owner either resolve the file or function from the code, or use the MATLAB function "isdeployed" to ensure the function is not invoked.
Contact the application owner for more details.
MATLAB:undefinedVarOrClass
I also tried to unzip the .mltbx file and copy the .m files to an existing path that is already present in the searchpath. That works but executing the .m file throws the following error:
Previously accessible file "/home/appuser/.MathWorks/MatlabRuntimeCache/R2024b/modelB0/modelBatch/FlowQ.m" is now inaccessible. │
│
Error in fetchAndInstallToolbox (line 41) │
│
Error in modelBatch (line 40) │
│
MATLAB:fileHasDisappeared
I understand that since R2019a, functions that modify the MATLAB search path are unsupported when using MATLAB Compiler. Both things that I tried modify the MATLAB runtime environment in the docker image, so I guess it is normal that these don't work.
Is there a way to get around this? Is it possible to dynamically add new classes and functions to a docker container?
0 件のコメント
回答 (1 件)
Tushar Sharma
2025 年 2 月 3 日 11:16
Hi Jan,
Quick question: Are you using the same MATLAB version both locally and in Docker? If not the warning you're seeing suggests that the app you're compiling uses a function that's not supported by the MATLAB Compiler. To fix this, make sure any unsupported functions are wrapped in the "isdeployed" function, so they're only called when not in deployed mode. This warning used to pop up all the time in "verbose" mode before MATLAB R2024a. Here's more about it - https://www.mathworks.com/help/compiler/isdeployed.html.
As for adding toolboxes in a MATLAB Docker container, I'd recommend checking out this link: Install Updates, Toolboxes, Support Packages, and Add-Ons in Containers.
You can customize the installation using the MATLAB Package Manager - https://github.com/mathworks-ref-arch/matlab-dockerfile/tree/main/alternates/building-on-matlab-docker-image.
Hope it helps!
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Containers についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!