Python Matlab 引擎在 Docker 中的使用

问题描述 投票:0回答:2

我有一个 python 脚本,它使用 matlab.engine() 在其中执行 matlab 脚本。这可以在我的机器上运行,但我无法对其进行 dockerize。

dockerfile 将需要两个图像 - Matlab 和 Python。 Matlab需要使用许可证文件进行初始化,然后执行Matlab文件夹中的python安装脚本。之后,python脚本就可以访问Matlab了。

感谢您对创建 Dockerfile 的任何帮助。或者有什么线索可以告诉我在哪里可以找到类似的东西。谢谢..

尝试过这个:

Python代码:

    import matlab.engine
    from flask import Flask
    
    @app.route("/matlab")
    def matlab_execute():
        eng = matlab.engine.start_matlab()
        eng.myscript(nargout=0)
        return "success"
    if __name__ == "__main__":        
        app.run()                     

Dockerfile:

    FROM mathworks/matlab:r2021a as matlab_image
    WORKDIR /matlab
    FROM python:3.8
    COPY --from=matlab_image /matlab /
    COPY myscript.m /
    COPY  py_script.py /
    WORKDIR /
    RUN pip install FLASK
    CMD [ "python", "./py_script.py" ]

但是当我运行容器时,我得到“没有名为 matlab 的模块”。 我怎样才能将 matlab 凭据传递给它?

python docker matlab dockerfile matlab-engine
2个回答
0
投票

官方 MathWorks docker 容器 Dockerfile 可在 GitHub 上获取Dockerhub 上提供了您可以使用的基础映像和依赖项映像。有关如何使用图像的说明可以在两个存储库中找到。

一些注意事项:

  1. 传递许可证的首选机制是使用许可证服务器并通过 docker 运行时标志 -eMLM_LICENSE_FILE=[PORT]@[LICENSE_SERVER_ADDRESS] 传递环境变量。您还可以传入一个文件,但您需要它使用许可证服务器,因为 Docker 容器无法为您提供激活许可证所需的一致的 flexlm 主机 ID。
  2. 新的 MPM 工具使创建 MATLAB Docker 容器变得更加容易。事实上,修改容器以包含您需要的 python 很简单。然后,您可以将代码复制到映像中的正确位置来运行它,代替提供的入口点,或者您可以使用代码安装一个卷以在该环境中主动开发它。

0
投票

您好,我想知道您是否解决了这个问题。如果您这样做了,我想知道您是否可以与我们分享完成的 dockerfile。请通过电子邮件回复。 [电子邮件受保护]

© www.soinside.com 2019 - 2024. All rights reserved.