一、環境安裝配置
安裝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位址,上述步驟才可以完整運作。