基于CentOs7中的docker部署face_recognition

  • 前情提要
    • 基本情况
  • 准备工作
    • requirements生成
    • Dockerfile编写
      • 踩过的坑
      • 成功
  • docker部署
    • 1、上传python项目
    • 2、部署
  • BUG记录

前情提要

第一次采用docker部署python项目(该项目是基于win10环境下安装好的face_recognition开发完成),竟然遇到了光是部署环境就差点把人劝退的face_recognition。搞了几天终于部署好了,因此记录一下整个过程。

基本情况

python人脸识别项目是在windows10上采用pycharm工具编写完成,运用face_recognition包进行人脸识别。该包依赖的dlib安装的是dlib-19.7.0版本,其他配套的环境python:3.6,opencv-python:3.4.2.16,opencv-contrib-python:3.4.2.16,numpy:1.16.0.
下面准备将在win10系统下完成的python项目部署到centos7系统的服务器中。

准备工作

  1. 安装虚拟机基础环境–docker、pip 。我安装的是centos7系统,具体流程可直接搜网上安装教程;
  2. 克隆虚拟机。为了保险起见,将安装好基础环境的虚拟机克隆一份,在克隆后的虚拟机上进行docker部署 ;
  3. 编写好的Python项目 。这是我的python项目截图,其中.py文件是我的python项目,requirements.txt记录.py文件用到的各种包,Dockerfile是一个用来构建镜像的文本文件,包含了一条条构建镜像所需的指令和说明。

下面将展开requirements的生成和Dockerfile的编写。

requirements生成

我用的pycharm,直接在terminal下面输入,即可生成该py文件需要的包及版本号:

pip freeze > requirements.txt

在生成的requirements.txt可能包含很多依赖,这时得按照项目需要手动删掉一些不需要的依赖包。

Dockerfile编写

踩过的坑

自己编写Dockerfile时,遇到了很多坑,主要集中在face_recogniton的环境搭建上。
face_recognition包依赖于dlib环境,而在win10环境下安装的dlib-19.7.0-cp36-cp36m-win_amd64.whl不需要安装cmake和boost即可运行。但在linux环境下,没有linux版本的whl,对应的dlib-19.7.0.tar.gz需要cmake和boost环境的支撑。因此,在Dockerfile中直接写了

RUN pip install cmake -i https://pypi.tuna.tsinghua.edu.cn/simple/
RUN pip install boost -i https://pypi.tuna.tsinghua.edu.cn/simple/
RUN pip install dlib

虽然cmake和boost会提示成功安装,但在安装face_recognition时直接报错,说boost找不到:

为了解决该问题找了各种方法,如去boost.org官网下载新版本的boost(国内镜像源只有boost-0.1.tar.gz),并按照相应的安装步骤试图直接安装,但又提示./b2找不到。
不知点开了多少网页终于得知,dlib在19.9.0版本后不需要依赖boost,只需要cmake即可应用,瞬间燃起了希望之火,而后又查阅一些成功将face_recognition上传到docker里的Dockerfile,一触即发成功安装。

成功

下面直接展示成功的Dockerfile内容。

# docker基础环境
FROM python:3.6
# 将当前目录的文件拷贝到face_recognition文件中
COPY . /face_recognition
# 设置工作目录为face_recognition文件夹
WORKDIR /face_recognition
# 安装依赖环境(虽然是centos系统,但不会影响安装)
RUN apt-get update -y
RUN apt-get install -y \git \cmake \libsm6 \libxext6 \libxrender-dev \python3 \python3-pip \gcc \python3-tk \libopenblas-dev \ liblapack-dev# 安装dlib
RUN git clone git://github.com/davisking/dlib.git && \cd dlib && \mkdir build && \cd build && \cmake .. && \cmake --build . && \cd .. && \python3 setup.py install
# 安装Face Recognition和OpenCV,指定国内镜像源,这样下载速度快些
RUN pip3 install face_recognition -i https://pypi.douban.com/simple/
RUN pip3 install opencv-python -i https://pypi.douban.com/simple/
# 安装requirements里的其他安装包
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 采用Python运行img_face_code_pickle.py(这里可以修改为你要运行的py文件)
CMD ["python", "img_face_code_pickle.py"]

docker部署

1、上传python项目

因为虚拟机上安装的是centos7无桌面版本,所以借助FinalShell工具来将windows上的Python文件上传到虚拟机。具体操作如下:

  • 查看虚拟机ip地址
#1、查看虚拟机ip地址
ifconfig

找到ens33对应的inet(图中红框标记处)为本机IP地址。

  • FinalShell连接虚拟机
    打开FinalShell,创建新的SHH连接,输入虚拟机的ip地址、用户名及密码,即可连接成功。

  • FinalShell上传文件
    打开连接。首先,在root目录下创建一个文件用以存放Python项目,并进入到文件中。

# 1、创建文件
mkdir pythonFile
#2、进入文件
cd pythonFile

然后将windows上的Python文件拖拽到pythonFile中,即可完成文件的上传。

2、部署

进入Dockerfile文件所在的根目录,我这里是docker_recognition目录

[root@localhost ~]# cd pythonFile
[root@localhost pythonFile]# ls
docker_recognition
[root@localhost pythonFile]# cd docker_recognition
[root@localhost docker_recognition]# ls
dbTableGen.py  Dockerfile  img_face_code_pickle.py  model.py  requirements.txt

在该目录下,创建docker镜像

docker build -t img_face_recognition . # . 表示当前路径

整个创建过程会比较漫长,耐心等待。。。最后若创建成功会有Successfully built xxxxx提示语。
创建完成后,查看docker镜像,输入

docker images

即可看到创建好的face_recognition镜像

运行镜像

docker run img_face_recognition

得到结果,因为在Dockerfile中写了CMD运行指令,所以可直接得到CMD中py文件的结果。

Dockerfile中未写CMD指令,要运行Python项目。首先cd进入到python项目所在根目录,然后在终端完成以下步骤:

  • 第一步 运行镜像。其中-i以交互模式运行容器,通常与 -t 同时使用;-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;-d 后台运行容器,并返回容器ID。
docker run -itd img_face_recognition
  • 第二步 列出所有在运行的容器
docker ps
  • 第三步 找到对应镜像容器,进入到容器内部
docker exec -it 容器id /bin/bash
  • 第四步 运行py文件
python 文件名.py

最终得到结果,如图所示:

至此,终于所有的部署已完成。

BUG记录

  1. Dockerfile不是文本文档,没有txt后缀。
  2. 运行代码时出现AttributeError: module ‘face_recognition’ has no attribute ‘face_locations’。

    这是因为python文件取名时,与face_recognition包重名。解决方法:对取名为face_recognition的py文件,重命名即可。

CentOs7 docker部署face_recognition相关推荐

  1. Linux centos7 docker部署gitlab私有服务器

    Docker部署gitlab私有服务器,那么,这里必须要有两个软件啦,一个是Docker,一个是gitlab.鉴于很多同学还是不太了解这两个东西,并且观看了不少的其他大神的相关博客,发现对于Docke ...

  2. centos7 docker端口_使用Docker部署Python应用

    0 引言 在linux系统部署Python应用需要安装较多依赖,在内网环境下十分繁琐,而且有时候还需要在其他服务器运行,则需要重复搭建环境和部署应用,因此本文介绍利用docker容器技术来部署.鉴于本 ...

  3. Centos7使用Docker部署Chemex资产管理系统

    前言 chemex 是一个开源的.轻量且高颜值的信息资产管理系统.系统基于 Laravel 开发,数据库支持 MySQL or MariaDB. 一.Centos7系统安装,(系统安装步骤省略) 1. ...

  4. 腾讯云(CentOS7)使用Docker部署JeecgBoot

    参考文章: 官方文档 linux (CentOS7+)安装docker 部署jeecgBoot项目 CentOS7 使用docker 安装redis 安装docker 由于我用的腾讯云,自带docke ...

  5. Centos7 Docker环境部署系统漏洞扫描工具Nessus

    docker部署nessus pull nessus镜像 docker pull tenableofficial/nessus 启动docker镜像,同时配置用户名和口令.不启动自动更新 docker ...

  6. Linux(centos7)上使用docker部署spring boot项目(加图超详细)

    准备工作 docker部署mysql并成功连接将所需数据库移入所部署的mysql中 docker部署java8 拉取镜像 docker pull java:8    查看镜像 docker image ...

  7. docker初体验:docker部署nginx负载均衡集群

    Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx负载均衡集群 环境 ce ...

  8. docker初体验:docker部署nginx服务

    Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx 环境 centos7 ...

  9. docker部署nginx并且挂载文件夹和文件

    docker部署nginx并且挂载文件夹和文件 2018年05月30日 10:18:32 丢你刘某 阅读数:2315 这段时间在研究docker,在部署nginx时遇到了坑,最主要的问题是在挂载文件和 ...

  10. centos 上传jar 命令_centos上快速将一个jar使用docker部署启动

    通常的jar应用,直接部署在服务器上,使用服务器资源直接部署,一个jar,一个启动脚本,就可以了. 最近想到一个场景,让docker时间和宿主机的时间不一样,进行不同应用部署的隔离.整理一下docke ...

最新文章

  1. libz.so.1: cannot open shared object file: No such file or directory
  2. 推荐系统-Task03离线物料系统的构建
  3. 54部经典国外动画片---送给70-80年代的朋友
  4. 微信公众号调用腾讯地图api
  5. 机器学习鸢尾花数据集分析
  6. 如何优雅的对网页截取长图
  7. GIT CZ的错误解决
  8. 【ORACLE】ORA-01653: unable to extend table XXXX by 128 in tablespace XXX
  9. linux 应用层gpio中断_树莓派官方自带gpio中断驱动bcm2708_gpio.c原理分析 linux 中断架构 中断子系统...
  10. 不会用matplotlib画多子图?收好这2个套路
  11. 017 Vowels match
  12. unity Generic动画更改为Humanoid动画后动作变形
  13. 最新互联网地图资质办理-2021测绘资质新规
  14. 微信小程序个人订单,微信头像用户名信息获取页面
  15. MobaXterm x11-forwarding
  16. C PUZZLES中的一道题
  17. CAD无法安装是什么原因?CAD无法安装解决办法
  18. 推荐好书:《思科九年》
  19. 虚拟经济全球化10亿美元生态圈乍现
  20. 挥泪告别录播组,传授录播方法

热门文章

  1. 清华大学计算机学院2019冬令营,清华大学2019人文社科冬令营初审结果公布
  2. 英伟达显卡算力榜(nvidia GPU compute capability)
  3. 市场调研-全球与中国旋转阻尼器市场现状及未来发展趋势
  4. 将本地调试gdb移植到arm板
  5. 什么是模拟信号?什么是数字信号
  6. 鼠标失灵,但鼠标和USB接口都是好的的情况。
  7. IT公司内推 互联网内推 bat内推
  8. 支付宝沙箱版app登入失败账户不存在问题
  9. 便利店“三方会战”,谁是最后赢家?
  10. 模拟学信网登录,Cookie 序列化,在反序列化之后不能用的问题