01 

引言

在前面我们说过Docker的基本使用,那么怎么制作Scrapy的Docker镜像呢?看过 testing 文章的小伙伴应该都知道用DockerFile。其实这里也是一样的,使用DockerFile制作镜像就好。那么,下面就简单说说怎么制作对应的镜像,算是DockerFile的实战吧。

 02 

自定义Scrapy镜像


本文的例子使用Scrapy爬虫之ImagesPipeline照片保存 文章中的代码进行演示。 首先在项目的根目录下新建一个requirements.txt,这个目录有什么用呢?可以指定项目的依赖包。文件中内容如下:

scrapy


可以指定具体的版本,如:

scrapy>=1.4.0


当然了,也可以在项目的根目录命令行运行如下命令,建议每个项目都有属于自己的虚拟环境的时候用这种方式:

pip freeze >requirements.txt


有 requirements.txt 文件后,我们需要新建Dockerfile文件,文件名使用Dockerfil就好,不加任何后缀。然后在Dockerfil文件中加上如下代码:

FROM python:3.7ENV PATH /usr/local/bin:$PATHADD . /testingWORKDIR /testingRUN pip install -r requirements.txtCMD scrapy crawl testing


估计没有看过我以前文章的人会感觉有点懵,下面 testing 解释下每行代码的意思。 第一行的FROM代表使用Docker基础镜像,相当于引入Python3.7的镜像,在此基础上运行本项目;第二行ENV是环境变量设置,将/usr/local/bin:$PATH赋值给PATH,增加/usr/local/bin这个环境变量路径; 第三行ADD是将本地的代码放置到虚拟容器中,我们看到它有两个参数:第一个参数是 . ,代表本地当前路径,第二个参数是/testing,代表虚拟容器中的路径,也就是将本地项目所有东西放置到虚拟容器的/testing目录下; 第四行WORKDIR是指定工作目录,这里将刚才添加的代码路径设成工作路径,这个路径下的目录结构和我们本地目录结构是相同的,所以我们可以直接执行库安装命令、爬虫运行命令等;第五行RUN是执行某些命令来做一些环境准备工作,由于Docker虚拟容器内只有Python 3环境,而没有所需要的Python库,所以我们运行此命令来在虚拟容器中安装相应的Python库Scrapy,这样就可以在虚拟容器中执行Scrapy命令了; 第六行CMD是容器启动命令。在容器运行时,此命令会被执行,在这里我们直接用scrapy crawl testing来启动爬虫。 当 requirements.txt 及 Dockerfil 文件都弄好后,我们可以在当前项目下执行命令:

docker build -t testing:latest .


上面命令执行成功后我们可以通过下面命令查看Docker全部的镜像

docker images


如果想运行输入下面命令即可:

docker run testing


 03 

结语


那么,Scrapy爬虫框架之制作Docker镜像就说到这里咯!886~