使用docker部署pyspider,解决官方No module named MySQLdb的问题

PySpider 是国人 binux 编写的强大的网络爬虫系统,其 GitHub 地址为:https://github.com/binux/pyspider,官方文档地址为:http://docs.pyspider.org/。

它带有强大的 WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时它支持多种数据库后端、多种消息队列,另外它还支持 JavaScript 渲染页面的爬取,使用起来非常方便。

一、官方文档:

http://docs.pyspider.org/en/latest/Running-pyspider-with-Docker/

存在的问题:
https://github.com/binux/pyspider/issues/715
注意:scheduler镜像,修复了ImportError: No module named MySQLdb的问题。

issues上的解决方案:
Dockerfile:

FROM binux/pyspider
RUN pip install MySQL-python
VOLUME ["/opt/pyspider"]
ENTRYPOINT ["pyspider"]
EXPOSE 5000 23333 24444 25555

docker build -t binux/pyspider:my .

二、 修复后

修复后的镜像,已经上传至dockerhub,地址:
https://cloud.docker.com/repository/docker/chinaclark1203/pyspider

1、使用单条命令启动:

# mysql
docker run --name mysql -d -v /data/mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:latest
# rabbitmq
docker run --name rabbitmq -d rabbitmq:latest

# phantomjs
docker run --name phantomjs -d chinaclark1203/pyspider:latest phantomjs

# result worker
docker run --name result_worker -m 128m -d --link mysql:mysql --link rabbitmq:rabbitmq chinaclark1203/pyspider:latest result_worker

# processor, run multiple instance if needed.
docker run --name processor -m 256m -d --link mysql:mysql --link rabbitmq:rabbitmq chinaclark1203/pyspider:latest processor

# fetcher, run multiple instance if needed.
docker run --name fetcher -m 256m -d --link phantomjs:phantomjs --link rabbitmq:rabbitmq chinaclark1203/pyspider:latest fetcher --no-xmlrpc

# scheduler 这里镜像换成了 chinaclark1203/pyspider:latest
docker run --name scheduler -d --link mysql:mysql --link rabbitmq:rabbitmq chinaclark1203/pyspider:latest scheduler

# webui
docker run --name webui -m 256m -d -p 5000:5000 --link mysql:mysql --link rabbitmq:rabbitmq --link scheduler:scheduler --link phantomjs:phantomjs chinaclark1203/pyspider:latest webui

2、使用docker-compose启动:
注意:建议在compose之外运行mysql和rabbitmq,因为它们可能没有使用pyspider重新启动。您可以在上面找到启动mysql和rabbitmq服务的命令。

phantomjs:
  image: chinaclark1203/pyspider:latest
  command: phantomjs
result:
  image: chinaclark1203/pyspider:latest
  external_links:
    - mysql
    - rabbitmq
  command: result_worker
processor:
  image: chinaclark1203/pyspider:latest
  external_links:
    - mysql
    - rabbitmq
  command: processor
fetcher:
  image: chinaclark1203/pyspider:latest
  external_links:
    - rabbitmq
  links:
    - phantomjs
  command : fetcher
scheduler:
  image: chinaclark1203/pyspider:latest
  external_links:
    - mysql
    - rabbitmq
  command: scheduler
webui:
  image: chinaclark1203/pyspider:latest
  external_links:
    - mysql
    - rabbitmq
  links:
    - scheduler
    - phantomjs
  command: webui
  ports:
    - "5000:5000"

启动

docker-compose up -d

停止

docker-compose down

三、结果截图

访问 127.0.0.1:5000,成功。运行爬虫,成功。

直接导出数据,很方便

架构小图:

未经允许不得转载:子航个人博客,记录生活点滴 » 使用docker部署pyspider,解决官方No module named MySQLdb的问题

赞 (0)
分享到:更多 ()

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 匿名你可真坑,你的镜像 mysql设置了密码 也同样无法启动。回复
    • 子航你的意思是:如果设置了密码,一样无法启动?回复