一、环境安装配置
安装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地址,上述步骤才可以完整运行。