crontab + docker + django 部署

服务器上的启动脚本

#!/usr/bin/env bash
docker_name=ip-flow-task
project_path=/home/code/ip-flow-task
image=xiaochonghao/django1.11.1:v2

echo "git tag" $1
echo "project path" ${project_path}
echo "docker name" ${docker_name}
echo "image" ${image}

cd ${project_path}
git pull
git checkout $1
echo "restart ip-flow service....."
echo "ensure old service start______________________________________"
docker ps
echo 'stop and rm old service'
echo "stop docker " ${docker_name}
docker stop ${docker_name}
echo "docker rm" ${docker_name}
docker rm ${docker_name}
echo "start new service"
docker run -d --name ${docker_name} -v ${project_path}:/data/ip-flow ${image} /bin/sh -c 'sh /data/ip-flow/bin/run_task.sh test;'

docker ps

docker container 内执行的命令

#!/usr/bin/env bash
dev_mode=test

if [ $# -ge 1 ]; then
    if [ $1 != 'hk' ] && [ $1 != 'jp' ] && [ $1 != 'test' ]; then
        echo 'usage: sh run_task.sh [hk|jp|test]'
        exit
    fi
    if [ $1 == 'hk' ]; then
        dev_mode=_hk
    elif [ $1 == 'jp' ]; then
        dev_mode=_jp
    else
        dev_mode=""
    fi
fi

echo "dev_mode=${dev_mode}"
cat > /var/spool/cron/alarm_crontab <<EOF
# 每天07:00执行一次
0 7 * * * /data/ip-flow/manage${dev_mode}.py write_flow_beat
# 每隔2个小时,在30分的时候执行一次
30 */2 * * * /data/ip-flow/manage${dev_mode}.py del_old_beat
EOF
crontab /var/spool/cron/alarm_crontab
service crond restart

chmod -R 777 /data/ip-flow/logs/

tailf /data/ip-flow/bin/run_task.sh

遇到的问题

在上面使用的是django custom command,虽然手动在容器能执行,本地调试也能执行,但是加入到crontab之后没有执行。最终确定是头部的引用出了问题,将默认的#!/usr/bin/env python改为#!/usr/local/bin/python2.7;并把脚本中的python .../manage.py ...改为.../manage.py ...

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,820评论 0 10
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,238评论 4 16
  • (一)、启动服务器 (二)、创建数据库表 或 更改数据库表或字段 Django 1.7.1及以上 用以下命令 1....
    夏天夏星阅读 5,704评论 0 17
  • 二、开发环境和Django安装 1.开发环境 Python3.4.1 Django1.7.1 Bootstrap3...
    Leathy阅读 1,413评论 0 1
  • 感赏儿子在我出差时也能安排好自己。 感赏儿子能及时完成老师作业,并且一大早起来订正错题,看到了儿子的上进。 感赏儿...
    玲03阅读 143评论 0 1