背景
为了业务需要,手动搭建一个pyspider,因为不想手动安装太多软件,考虑到 官网有释放出了一个可用的docker-compose.yml 配置;
上车
- 碰到问题一: 直接使用官网的docker-compose.yml (http://docs.pyspider.org/en/latest/Running-pyspider-with-Docker/)会碰到:scheduler 启动不起来的问题,使用 docker logs name 可以看到具体的报错信息是: ImportError: No module named MySQLdb
- 解决方式:因为官网的版本,有个模块没安装,重新编译一下image:
# 新建文件Dockerfile,填入以下内容:FROM binux/pyspiderRUN pip install MySQL-pythonVOLUME ["/opt/pyspider"]ENTRYPOINT ["pyspider"]EXPOSE 5000 23333 24444 25555# 执行以下命令:docker build -t binux/pyspider:my .
- 这样就生成了pyspider的my 标签;把官网的配置里面的: binux/pyspider:latest 全部改成 binux/pyspider:my
- 碰到问题二:提示:docker pyspider “Can’t connect to MySQL server on 172
- 解决方式: 因为官网的docker compose写法是把数据库和queue放外面,而我是放在 docker-compose 配置里面;所以为了确保他们在同一个网络下,我先创建要给网络 (命令行先执行: docker network create nginx-proxy),然后把整个放在里面; docker-compose.yml 建下面:
##file_name: docker-compose.yml### 不要随意改动:version: "3"services:phantomjs:image: binux/pyspider:mycommand: phantomjsresult:image: binux/pyspider:mylinks:- mysql- rabbitmqcommand: result_workerprocessor:image: binux/pyspider:mylinks:- mysql- rabbitmqcommand: processorfetcher:image: binux/pyspider:mylinks:- phantomjs- rabbitmqcommand: fetcherscheduler:image: binux/pyspider:mylinks:- mysql- rabbitmqcommand: schedulerwebui:image: binux/pyspider:mylinks:- scheduler- phantomjs- mysql- rabbitmqcommand: webuiports:- "5000:5000"mysql:image: mysql:5.6restart: alwaysenvironment:MYSQL_ALLOW_EMPTY_PASSWORD: "yes"rabbitmq:image: rabbitmq:latestrestart: alwaysnetworks:default:external:name: nginx-proxy
- 执行 docker-compose up ,访问 http://ip:5000 出现图形界面:成功;
