docker 中使用 crontab
2017-08-01 本文已影响138人
weineeL
docker 中使用crontab
相关命令
-
使用 python:2.7.13 镜像,是基于buildpack-deps:jessie镜像的,是一个Debian系统。
-
docker中使用cron执行python脚本时:
sys.path = ['/var/code/XHTSpider/XHTSpider/es', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
在直接使用python命令执行脚本时
sys.path = ['/var/code/XHTSpider/XHTSpider/es', '/usr/local/lib/python27.zip', '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-linux2', '/usr/local/lib/python2.7/lib-tk', '/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']
注意 dite-packages 和 site-packages。然而在使用pip安装包时,是安装在site-packages下的,所以在要在要执行的脚本开始部分加上
import sys sys.path.append("/usr/local/lib/python2.7/site-packages")
这可能和docker容器的用户管理有关,执行cron的用户环境变量的不同。
-
debian 中 crontab 程序叫 cron,服务名也是cron,不同系统的使用方式会有所不同。
service cron start/stop/restart/reload/status # 直接启动 cron
Dockerfile
FROM python:2.7.13
WORKDIR /root
COPY ./etc/apt.sources.list /etc/apt/sources.list
RUN apt-get update -y && \
apt-get install -y cron && \
touch /var/log/cron.log
ADD ./etc/crontab /etc/cron.d/crontab
# tail 可以防止容器自动退出运行
CMD cron && tail -f /var/log/cron.log
相关文件
-
./etc/apt.sources.list
apt-get 使用阿里云源
deb http://mirrors.aliyun.com/debian wheezy main contrib non-free
deb-src http://mirrors.aliyun.com/debian wheezy main contrib non-free
deb http://mirrors.aliyun.com/debian wheezy-updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian wheezy-updates main contrib non-free
deb http://mirrors.aliyun.com/debian-security wheezy/updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian-security wheezy/updates main contrib non-free
./etc/crontab
*/1 * * * * root echo $(date) >> /var/log/cron.log 2>&1