centos7.5 yum部署docker 进行分布式scrapy框架爬虫

一、环境安装配置

安装centos7.5镜像 官网下载。https://www.centos.org/download/ 

配置网络保证yum正常

安装依赖包yum-utils、 device-mapper-persistent-data、lvm2

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

安装docker有多种方式,这里使用yum安装,因此需配置docker的yum源,运行以下命令

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装docker (默认为最新版  如需要安装特定版本,-XXX 加上版本号即可)

sudo yum install docker-ce

从官网docker-hub 安装 redis:alpine ,alpine 镜像

docker pull redis:alpine

docker pull alpine

编写Dockerfile文件构建自己的Python镜像 

必须要更新pip为最新版本

FROM alpine     
LABEL version="1.0"
LABEL description="my python"
RUN apk update
RUN apk add --no-cache python3 python3-dev gcc openssl-dev openssl libressl libc-dev linux-headers libffi-dev libxml2-dev libxml2 libxslt-dev 
RUN  pip3 install --upgrade pip
RUN  pip3 install Scrapy requests scrapy-redis
COPY  . /code
WORKDIR /code
CMD  ["python3", "version.py"]

编写测试version.py文件

print("初始版本v1")

创建docker镜像 并给定tag名

docker build -t scrapy-python .

docker tag imagesid scrapy-python:v1

docker rmi scrapy-python:latest

运行创建的镜像 看看测试效果

docker run --rm imagesid

编写Dockerfile 并进行redis测试

FROM alpine
LABEL version="1.0"
LABEL description="my redis"
RUN apk --update add  redis && \
    rm -rf /var/cache/apk/*
#pass&remote
RUN  sed -i "s/^bind 127\.0\.0\.1.*/bind 0\.0\.0\.0/g" /etc/redis.conf \
    && sed -i "s/^daemonize yes/daemonize yes/g" /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server" , "/etc/redis.conf"]

启动redis容器,用本地redis-cli测试连接 ping 出现“pong” 即表示测试通过。

docker run -d -p 6379:6379 XXXX

 

 到此 基础环境已部署完成

=================================================================================

二 、爬虫demo的编写

 

三 、scrapy框架 镜像的创建及运行

拷贝code 文件

编写Dockerfile文件,参考初始Python镜像Dockerfile文件,后面的命令有所不同,spider是自己的爬虫类名。

FROM alpine     
LABEL version="1.0"
LABEL description="my python"
RUN apk update
RUN apk add --no-cache python3 python3-dev gcc openssl-dev openssl libressl libc-dev linux-headers libffi-dev libxml2-dev libxml2 libxslt-dev 
RUN  pip3 install --upgrade pip
RUN  pip3 install Scrapy requests scrapy-redis
COPY  . /code
WORKDIR /code
ENTRYPOINT ['scrapy']
CMD  ["crawl", "spider"]

  重点 docker运行的时候容器之间是不能通信的,详情可百度docker的网络连接方法。--link  或者 --net  本文采用 --net

docker run --rm --net=host XXXX

master 和slave是一样的步骤,运行即可将爬虫的文件存放到docker redis服务器中,通过本地redis-cli可查看爬虫结果。至于之后的redis服务器中的数据存放到mysql或者mongodb数据库等等 可以通过数据卷方式加载存放到docker服务器目录。

 

注意一点:

本地的scrapy爬虫的scrapy框架的setting.py连接redis地址都是127.0.0.1  拷贝到docker中的时候要修改为docker服务器的ip地址,上述步骤才可以完整运行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章