我有一个python脚本,在里面用matlab.engine()执行一个matlab脚本。这在我的机器上可以工作,但是我不能把它停靠。
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()
停靠文件:
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证书传递给它呢?
1条答案
按热度按时间sqyvllje1#
official MathWorks docker container Dockerfile is available on GitHub. Both a base image and dependencies image you can use are available on Dockerhub.有关如何使用该映像的说明可以在两个存储库中找到。
几个注意事项:
1.传入许可证的首选机制是使用许可证服务器并通过Docker运行时标志-eMLM_LICENSE_FILE=[PORT]@[LICENSE_SERVER_ADDRESS]传入环境变量。您也可以传入文件,但需要使用许可证服务器,因为Docker容器无法给予激活许可证所需的一致flexlm主机ID。
1.新的MPM工具使得创建MATLAB Docker容器变得非常容易。事实上,修改容器以包含所需的python将非常简单。然后,您可以将代码复制到映像中正确的位置以运行它,代替提供的入口点,或者您可以装载一个带有代码的卷,以便在该环境中积极地开发它。