Docker+jenkins+Flask===>devops+ML

招晓贤

AI engine @ Facebook

我们训练好的模型要迅速部署到生产环境中,我们可以使用devops的方法

简单来说,我们可以

devolopers ==>> github更新==> Jenkins ===> build flask+docker == > internet <==> user png

https://blog.csdn.net/yunqiinsight/article/details/88787097]

https://blog.csdn.net/sunansheng/article/details/48372149

我在建模的是时候,每次都要自己去build docker,而且不能自动测试修改后的代码是否对成功建模,为了解决这些问题,我觉得采用devops这种CICD概念能够解决这个问题,也就是当我push新的代码之后,利用集成工具jenkins构建一条pipeline,根据脚本进行自动化建模测试.

所以我步骤可以简化为以下几步

  1. 简单建模
  2. 在jenkins上部署pipeline,测试pipline是否成功
  3. 在github添加webhook,用于触发jenkins pipeline job
  4. 修改代码,查看jenkins pipeline job是否被自动化触发
  5. pipeline job成功后,测试模型

基础知识:

  1. Docker Docker是一种开源的容器化技术,允许开发人员将应用程序与依赖包打包一起,并将其与底层操作系统隔离开来.与VM不同,docker不需要每个应用程序的Guest虚拟机操作系统,因此可以维护轻量级资源管理系统,同时具有较低的内存占用,这有助于将来我们的应用程序和模型的可伸缩性
  2. Jenkins Jenkins是一款很受欢迎的持续集成交付工具,可自动构建和部署项目.Jenkins提供了一个在其管道中添加GitHub web-hook的规定,这样developers每次push更新代码到Git hub repository时,他会自动开始为修改后的模型进行验证测试,并构建docker镜像来镜像部署
  3. ngrok是一个免费工具,可将公共URL传送到本地运行的应用程序,它会生成一个可以在Github web-hook中用于触发推送时间的URL

Step1: 我们安装ngrok, 安装网址.https://ngrok.com/,具体详情可以参看(https://www.jianshu.com/p/571fdbc98d25)

在ngrok的文件夹上输入命令:

./ngrok http 8080

png

127.0.0.1:4040/status 是可以坚持ngrok的url状态和信息

Step2: 添加ngrok的url到git hub 上 png

Step3: 在Jenkins上创建pipeline job png

Step4: 在构建触发器上选择 GitHub hook trigger for GITScm polling png

Step5: 在Pipeline流水线上按照下面图片选择,脚本路径为Jenkinsfile,保存,其中Jenkinsfile是定义Pipeline job如何运行的 png png

Jenkins参考链接 (https://www.jenkins.io/doc/book/pipeline) (https://blog.csdn.net/liumiaocn/article/details/92794876?utm_medium=distribute.pc_relevant.none-task-blog-title-8&spm=1001.2101.3001.4242)

出现docker command 问题,

如果docker command问题的出现,那是因为环境变量问题,我们要知道,因为Jenkins是build在本地电脑,所以我们的环境变量也要设置好

  1. 首先去Jenkins系统管理,选择系统配置 png
  2. 进去系统管理后,我们可以看到主目录和Jenkins URL,然后我们去全局属性,选择环境变量,然后添加PATH pngpng
  3. 当然我们也可以在Jenkinsfile去设置环境变量