scrapyd spiderkeeper docker部署

首先,有参考这边文章:
scrapyd spiderkeeper docker部署 by QY_大师兄

我这边只是一个很简单的scrapy项目,需要同时启动 scrapyd服务和spiderkeeper服务,启动完了之后,还要上传egg文件部署。

1.先修改scrapy.cfg文件,需要添加 [scrapyd]

# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html

[settings]
default = newsSpider.settings

[deploy]
url = http://0.0.0.0:6800/
# url = http://localhost:6800/
project = newsSpider

[scrapyd]
bind_address = 0.0.0.0
http_port = 6800

必须要添加 [scrapyd] ,如果只是单纯的 [deploy] 里面把url改成http://0.0.0.0:6800/,不会起任何作用。同时你可以测试下,如果把[scrapyd] 里面的http_port改成6801,那么scrapyd服务启动的话,地址就会变成 http://0.0.0.0:6801/

2.requirements.txt

requests==2.13.0
Scrapy==1.5.1
scrapyd==1.2.0
scrapyd-client==1.1.0
SpiderKeeper==1.2.2
PyMySQL==0.9.3
oss2==2.7.0
lxml==4.2.5
DBUtils==1.3
Twisted==18.9.0

这边需要注意这几个包的版本,比如Scrapy、scrapyd、SpiderKeeper、Twisted,如果不规定版本,那么运行时候可能会出现奇奇怪怪的问题,特别注意Twisted,改成自己运行没有问题的版本。

3.Dockerfile

FROM python:3.6

WORKDIR /usr/src/project/

COPY . .

RUN pip install --upgrade setuptools==45.2.0 -i https://pypi.doubanio.com/simple/
RUN pip install -r requirements.txt -i https://pypi.doubanio.com/simple/

CMD bash -c 'scrapyd-deploy --build-egg output.egg'

EXPOSE 6800

这个setuptools默认是最新版本,最新版本46.0.0,下载包的时候可能会出现问题,这个也是改成自己运行项目没有问题的版本。

到这里的时候,就可以用docker build -t news:v1 . 生成一个镜像,我这边的镜像名为 news:v1

4.docker-compose.yml

version: '2'

services:
  scrapyd_task:
    image: news:v1
    ports:  # 这个必须暴露到本机,不然访问不到这个服务
      - 6800:6800
    command: scrapyd

  spiderkeeper:
    image: news:v1
    ports: # 暴露到本机,可以远程操作
      - 5000:5000
    command: spiderkeeper --server=http://192.168.20.102:6800 --username=admin --password=admin
# 192.168.20.102 是我的主机ip,换成自己的主机ip

5.运行项目,上传egg文件
docker-compose up 就可以启动项目了
启动后如图所示
scrapyd spiderkeeper docker部署_第1张图片
你可以试着访问一下三个地址
http://0.0.0.0:6800/
http://192.168.20.102:6800
http://0.0.0.0:5000
如果都能访问,说明成功了。
之后在自己本地电脑,scrapyd-deploy --build-egg output.egg 生成egg文件,上传到spiderkeeper部署就行了。

你可能感兴趣的:(Docker)