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地址,上述步驟纔可以完整運行。

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