CentOs7 docker部署face_recognition
基于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系统的服务器中。
准备工作
- 安装虚拟机基础环境–docker、pip 。我安装的是centos7系统,具体流程可直接搜网上安装教程;
- 克隆虚拟机。为了保险起见,将安装好基础环境的虚拟机克隆一份,在克隆后的虚拟机上进行docker部署 ;
- 编写好的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记录
- Dockerfile不是文本文档,没有txt后缀。
- 运行代码时出现AttributeError: module ‘face_recognition’ has no attribute ‘face_locations’。
这是因为python文件取名时,与face_recognition包重名。解决方法:对取名为face_recognition的py文件,重命名即可。
CentOs7 docker部署face_recognition相关推荐
- Linux centos7 docker部署gitlab私有服务器
Docker部署gitlab私有服务器,那么,这里必须要有两个软件啦,一个是Docker,一个是gitlab.鉴于很多同学还是不太了解这两个东西,并且观看了不少的其他大神的相关博客,发现对于Docke ...
- centos7 docker端口_使用Docker部署Python应用
0 引言 在linux系统部署Python应用需要安装较多依赖,在内网环境下十分繁琐,而且有时候还需要在其他服务器运行,则需要重复搭建环境和部署应用,因此本文介绍利用docker容器技术来部署.鉴于本 ...
- Centos7使用Docker部署Chemex资产管理系统
前言 chemex 是一个开源的.轻量且高颜值的信息资产管理系统.系统基于 Laravel 开发,数据库支持 MySQL or MariaDB. 一.Centos7系统安装,(系统安装步骤省略) 1. ...
- 腾讯云(CentOS7)使用Docker部署JeecgBoot
参考文章: 官方文档 linux (CentOS7+)安装docker 部署jeecgBoot项目 CentOS7 使用docker 安装redis 安装docker 由于我用的腾讯云,自带docke ...
- Centos7 Docker环境部署系统漏洞扫描工具Nessus
docker部署nessus pull nessus镜像 docker pull tenableofficial/nessus 启动docker镜像,同时配置用户名和口令.不启动自动更新 docker ...
- Linux(centos7)上使用docker部署spring boot项目(加图超详细)
准备工作 docker部署mysql并成功连接将所需数据库移入所部署的mysql中 docker部署java8 拉取镜像 docker pull java:8 查看镜像 docker image ...
- docker初体验:docker部署nginx负载均衡集群
Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx负载均衡集群 环境 ce ...
- docker初体验:docker部署nginx服务
Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx 环境 centos7 ...
- docker部署nginx并且挂载文件夹和文件
docker部署nginx并且挂载文件夹和文件 2018年05月30日 10:18:32 丢你刘某 阅读数:2315 这段时间在研究docker,在部署nginx时遇到了坑,最主要的问题是在挂载文件和 ...
- centos 上传jar 命令_centos上快速将一个jar使用docker部署启动
通常的jar应用,直接部署在服务器上,使用服务器资源直接部署,一个jar,一个启动脚本,就可以了. 最近想到一个场景,让docker时间和宿主机的时间不一样,进行不同应用部署的隔离.整理一下docke ...
最新文章
- libz.so.1: cannot open shared object file: No such file or directory
- 推荐系统-Task03离线物料系统的构建
- 54部经典国外动画片---送给70-80年代的朋友
- 微信公众号调用腾讯地图api
- 机器学习鸢尾花数据集分析
- 如何优雅的对网页截取长图
- GIT CZ的错误解决
- 【ORACLE】ORA-01653: unable to extend table XXXX by 128 in tablespace XXX
- linux 应用层gpio中断_树莓派官方自带gpio中断驱动bcm2708_gpio.c原理分析 linux 中断架构 中断子系统...
- 不会用matplotlib画多子图?收好这2个套路
- 017 Vowels match
- unity Generic动画更改为Humanoid动画后动作变形
- 最新互联网地图资质办理-2021测绘资质新规
- 微信小程序个人订单,微信头像用户名信息获取页面
- MobaXterm x11-forwarding
- C PUZZLES中的一道题
- CAD无法安装是什么原因?CAD无法安装解决办法
- 推荐好书:《思科九年》
- 虚拟经济全球化10亿美元生态圈乍现
- 挥泪告别录播组,传授录播方法