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