曾静的技术博客

但行好事,莫问前程.

嗨,我是曾静 (@devzeng),目前暂居深圳。


这是我用来记录平日学习笔记的地方,欢迎您的访问.

在Docker上运行Scrapy

之前使用Scrapy写过一个空气质量的采集程序,最近要切换到另外一台服务器上面去,折腾了几个小时的安装环境还是没跑起来。几次之后就放弃了,刚好那台服务器上面安装了Docker的环境,运行了一个Nexus的服务几个月来一直都很稳定,那为啥不可以把Scrapy也放在上面运行呢?

操作过程

下面记录下我的处理的过程:

(1)创建dockfile

scrapy.cfg文件所在的目录下面创建dockfile,里面的内容如下:

FROM ubuntu
MAINTAINER hhtczengjing@gmail.com
RUN apt-get update \
	&& apt-get -y dist-upgrade \
	&& apt-get install -y openssh-server  \
	&& apt-get install -y python2.7-dev python-pip  \
	&& apt-get install -y zlib1g-dev libffi-dev libssl-dev  \
	&& apt-get install -y libxml2-dev libxslt1-dev  \
	&& apt-get install -y libmysqlclient-dev \ 
	&& pip install setuptools  \
	&& pip install Scrapy \
	&& pip install MySQL \ 
	&& apt-get clean      \
 	&& apt-get autoclean  \
 	&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY . /data
WORKDIR /data
CMD ["scrapy", "crawl", "aqi"]

(2)编译镜像

在命令行进入dockerfile所在目录执行如下(改过程持续时间比较长):

docker build -t aqi:1.0.0 .

编译完成之后可以通过如下的方式运行:

docker run --rm aqi:1.0.0

(3)配置Crontab

在服务器上面创建一个run.sh的可执行文件,里面的内容如下:

#!/bin/bash

. /etc/profile
. ~/.bash_profile
docker run --rm aqi:1.0.0

使用crontab -e添加一条记录如下:

0 * * * * sh /home/aqi/run.sh >> /home/aqi/log/log.`date +\%Y\%m\%d\%H\%M\%S` 2>&1

这样下来就实现了一个在Docker上面运行Scrapy采集任务的功能。

参考资料

1、Dockerfile reference

最近的文章

使用Python合并图片生成PDF文件

最近做了一个小功能,将一个页面上面的所有图片下载下来生成一个PDF文件。发现了一个非常好用的库reportlab, pyPdf。只需要几行代码就能实现功能,如果没有安装可以通过pip安装:pip install reportlab -i https://pypi.douban.com/simplepip install pyPdf -i https://pypi.douban.com/simple注: -i表示使用豆瓣的镜像服务操作过程下面记录下我的处理的过程:(1)如果只是简单的需要将图...…

Note继续阅读
更早的文章

CentOS安装Hadoop

系统环境下载软件: (1)JDK (2)Hadoop (3)MySQL (4)Hive (5)HBase (6)Zookeeper1、服务器配置(1)修改主机名将192.168.13.1、192.168.13.2 和 192.168.13.3 这三台机器分别命名为hadoop-master、hadoop-slave1 和 hadoop-slave2。1) 修改/etc/sysconfig/network文件修改HOSTNAME=localhost.localdomain为HOS...…

Note继续阅读