zoukankan      html  css  js  c++  java
  • 在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中就可以正常读取了。

  • 相关阅读:
    UVa
    UVa 1630
    P3891 [GDOI2014]采集资源
    一个非常naive的小学数学魔术证明题
    P2831 [NOIP2016 提高组] 愤怒的小鸟
    P4211 [LNOI2014]LCA
    P4137 Rmq Problem / mex 强制在线做法
    P2272 [ZJOI2007]最大半连通子图
    P5664 [CSP-S2019] Emiya 家今天的饭
    盘点linux操作系统中的10条性能调优命令,一文搞懂Linux系统调优
  • 原文地址:https://www.cnblogs.com/haoxi/p/8186901.html
Copyright © 2011-2022 走看看