天天看點

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位址,上述步驟才可以完整運作。

繼續閱讀