Docker+OpenFaas+Flask客户端环境配置以及harbor+rancher集群使用
1. Matlab打包
1.1 Matlab文件打包
2. Python+matlab+Flask+Faas配置
2.1. 环境配置-客户端连接服务端
2.2 环境配置-基于flask-python的OpenFaas配置
2.3 自动生成基于python的OpenFaas工程
2.4 引入matlab包和数据
2.5 将python_matlab的tar(python_mcr.tar)包变成镜像
2.6 修改handler文件
2.7 自动生成requirements.txt 文件
2.8 创建dockerfile
2.9. 换下载源
3. 程序运行
3.1 安装依赖包
3.2 运行文件(正确流程)
3.3 打包上传的结果查看
1. Matlab打包
1.1 Matlab文件打包
- 写一个简单的matlab函数,plus_one.m。
2)进入library compiler应用进行函数打包。
下图中的Samples可以自动创建或者自行编写,这里自动创建plus_oneSample1.m,之后maltab中可以在for_redistribution_only/samples文件夹下自动生成用于python调用matlab的.py文件例子
下图中的Files required中可以添加打包的函数(plus_one)调用的子函数。
填写完成后即可点击Package进行打包,打包后生成plus_one.prj文件和plus_one文件夹。
文件夹plus_one中的内容如下图所示
在文件夹for_redistribution_files_only中,含有setup.py文件,该文件是执行python拓展包安装的文件。在路径for_redistribution_files_only/samples中含有python语言调用打包的matlab函数的示例程序plus_oneSample1.py,该示例程序根据library compiler中添加的Samples生成,非常值得参考。
2. Python+matlab+Flask+Faas配置
2.1. 环境配置-客户端连接服务端
在本地机器的系统环境变量中设置一个名为的OPENFAAS_URL的变量,值为服务端的地址和端口
现在登入(可能需要打开一个新的终端命令行工具窗口,让环境变量生效)
本地测试是否连接成功:
GitBash中输入:
faas-cli version
2.2 环境配置-基于flask-python的OpenFaas配置
安装flask包,之后才能用基于flask-python的OpenFaas
Gitbash中输入命令:(注意是faas-cli 命令)
faas-cli template pull https://github.com/openfaas-incubator/python-flask-template
可以看到工程的template路径下出现之前下载的包
2.3 自动生成基于python的OpenFaas工程
faas-cli new yourprojectname --lang python3-flask -g 网址和端口
2.4 引入matlab包和数据
将打包好的文件放到python相应的工程目录下(可手动拷贝或者使用COPY命令)
在terminal中cd到matlab包的for_redistribution_files_only中,执行:python setup.py install
注意修改dockerfile
在其中添加:RUN cd yourmatlabfunctionname/for_redistribution_files_only &&python setup.py install
2.5 将python_matlab的tar(python_mcr.tar)包变成镜像
docker load -i ‘文件位置’
2.6 修改handler文件
前面加上matlab环境路径配置代码:
import osold_env = os.environ.get("LD_LIBRARY_PATH")
if old_env:old_env = os.environ['LD_LIBRARY_PATH'] = os.environ['LD_LIBRARY_PATH'] + \"/usr/local/MATLAB/MATLAB_Runtime/v97/runtime/glnxa64:" + \"/usr/local/MATLAB/MATLAB_Runtime/v97/bin/glnxa64:" + \"/usr/local/MATLAB/MATLAB_Runtime/v97/sys/os/glnxa64:" + \"/usr/local/MATLAB/MATLAB_Runtime/v97/extern/bin/glnxa64:"
else:old_env = os.environ['LD_LIBRARY_PATH'] = "/usr/local/MATLAB/MATLAB_Runtime/v97/runtime/glnxa64:" + \"/usr/local/MATLAB/MATLAB_Runtime/v97/bin/glnxa64:" + \"/usr/local/MATLAB/MATLAB_Runtime/v97/sys/os/glnxa64:" + \"/usr/local/MATLAB/MATLAB_Runtime/v97/extern/bin/glnxa64:"
os.environ['LD_LIBRARY_PATH'] = old_env
2.7 自动生成requirements.txt 文件
安装pipreqs:pip install pipreqs
cd到工程目录下,执行:pipreqs ./ --encoding=utf8 --force
2.8 创建dockerfile
在template的python-flask目录下,编写dockerfile,注意在其中加入修改成符合flask的目录结构
2.9. 换下载源
将sources.list拷贝到template的python-flask中,并在dockerfile中加入:
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak
COPY sources.list /etc/apt/sources.list
(需要根据自己的目录结构进行修改,sources.list可自行百度创建)
附:需要根据工程需要,相应的修改index.py和yml文件
3. 程序运行
3.1 安装依赖包
1) pandas 包
升级pip 命令—此为安装到anaconda 环境中:
python -m pip install --upgrade pip
安装pandas 包
pip install pandas -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com/pypi/simple
也可以直接在pycharm interpreter 中安装
注:安装pandas时可能需要挂VPN
附:pandas包使用conda 命令安装时显示版本与py37不匹配,因此这里用pip
2) matlab matplotlib等包
直接在pycharm interpreter 中安装
3.2 运行文件流程
1)Docker打开
2)登录faas客户端
3)创建镜像
faas-cli build -f yourprojectname.yml
4)登录harbor
5) 上传镜像
faas-cli push -f yourprojectname.yml
6)部署镜像
faas-cli deploy -f yourprojectname.yml
3.3 打包上传的结果查看
登录harbor查看即可