这周二外甥做了一个基于pytorch的人脸识别程序,后端使用flask提供api服务,算是他第一次使用Python。
在讨论部署过程中,他没有使用Python常用的虚拟环境,而是使用了docker镜像。并在一番折腾后,昨天上线成功了。
他的方法是以最新的Ubuntu镜像为基础,编写dockerfile文件,先通过apt与pip安装必要的系统软件后,再运行编写好flask程序。这样的好处是不用考虑服务器环境,同时也做到开箱即用。
我之前用过的几个单一功能的应用,比如splash,都是使用这种方式。但是涉及到数据库等,就要麻烦的多,比如最近使用odoo,需要几个镜像协作,使用起来就要复杂得多。
我之前采用的虚拟环境部署,是先试用pip freeze导出程序依赖库信息,与程序代码一起打包。在部署的服务器上,通过pip根据导出文件内容安装相应库。
这样部署,程序包要小得多,但需要考虑系统的版本及兼容性,同时还需要进行运行配置。
两种方式各有千秋。外甥的docker部署成功,也算是有了参考,可以进行测试部署其他的应用。
毕竟现在网上太多的教程不靠谱了。