• 在Docker中运行crontab


    在把自己的项目通过Docker进行打包时,由于项目中用到了crontab,不过使用到的基础镜像python:3.6-slim并没有安装这项服务,记录下在镜像中安装和配置crontab的过程。

    Dockerfile

    由于基础镜像中没有crontab服务,需要在打包自己镜像的Dockerfile中加入安装cron服务的步骤。

    FROM python:3.6-slim
    MAINTAINER whx3000 <wanghaoxi3000@163.com>
    
    RUN apt-get update && 
        apt-get install -y --no-install-recommends 
        cron && 
        rm -rf /var/lib/apt/lists/* && 
        apt-get clean
    
    RUN chmod +x ./docker-entrypoint.sh
    
    ENV LC_ALL C.UTF-8
    ENTRYPOINT ["./docker-entrypoint.sh"]
    

    执行apt安装时注意加入-y --no-install-recommends,并且在安装完成后执行rm -rf /var/lib/apt/lists/* && apt-get clean命令,可以有效减小镜像的体积。

    这样安装完cron服务后,crontab服务并不会自启动,还需要一个docker-entrypoint.sh启动脚本来添加crontab的启动命令。

    启动脚本

    #!/bin/bash
    set -x
    
    # 保存环境变量,开启crontab服务
    env >> /etc/default/locale
    /etc/init.d/cron start
    

    /etc/init.d/cron start用于启动crontab服务,但这样启动的crontab服务中配置的定时命令是没有Dockerfile中设置的环境变量的。因此还需要在这之前执行env >> /etc/default/locale,这样有Dockerfile中通过ENV设置的环境变量在crontab中就可以正常读取了。

  • 相关阅读:
    codeforces round #433 div2
    bzoj1951
    bzoj3620
    bzoj2286
    bzoj1513
    bzoj4390
    codeforces round 430 div 2
    bzoj3339
    准备实现体积蒙皮
    看牛顿法的改进与验证局部收敛
  • 原文地址:https://www.cnblogs.com/haoxi/p/8186901.html
Copyright © 2020-2023  润新知