使用Docker部署分布式爬虫

使用 scrapy-redis

了解 scrapy-redis 的原理

scrapy-redis 主要是使用 redis 代替了 scrapy 原本的调度器和过滤器。
只需要修改 setting 文件即可

安装 docker

使用了华为云官方提供的部署工具
只要提供账号密码 以及 dockerfile 即可

安装 scrapyd 镜像

首先尝试通过 dockerfile 构造镜像 但是失败了,后来直接采用了 github 上写好的镜像文件 方才构造完成
在使用的过程中牢记一下命令
docker ps -a 查看已有的容器
docker ps 查看正在运行的容器
docker start 启动容器
docker stop 关闭容器
docker rm 删除容器
docker run –name [给容器起名] -v $PWD:/code/logs -d xxxx
-v是挂载宿主机的文件
$PWD 是当前目录
:后面的是容器中的工作目录
-d 是在后台 yunx
常见的有 docker exec -it xxx 会分配一个伪终端
使用 dockerfile 构造镜像
docker images [打算叫的镜像名] .
这个点不能省略 dockerfile 文件在当前文件夹下
还有就是将容器的端口映射到宿主机中,比如 8080:8080

dockerfile 文件基本格式

主要有两个比较重要的地方
FROM…
RUN…
基本来说是 FROM 搭建了基本的框架
然后 RUN 执行一些安装的命令
如果要使用本地的配置文件,需要使用 COPY 命令 将宿主机的文件拷贝到容器中,当然也需要定义容器的工作目录吧,我想是需要的。

安装 scrapydweb

目前采用的是 github 直接构建,可能之后也会使用 docker
运用 scrapydweb 命令
在端口 5000 中即可看到管理界面
在运行前需配置文件,目前来说 在哪里执行 scrapydweb 命令,就会在当前文件夹下生成一个配置文件,在配置文件中需要加上 scrapyd 的 IP 地址和端口号,否则无法正常运行。除此之外,还可以在当前文件夹下创建一个 project 文件夹用来存放项目文件。

存在问题

docker 构建镜像文件时的时区问题没有解决
docker 重启失败的问题没有解决