在Docker中运行crontab

栏目: 编程工具 · 发布时间: 7年前

内容简介:在把自己的项目通过Docker进行打包时,由于项目中用到了crontab,不过使用到的基础镜像Python:3.6-slim并没有安装这项服务,记录下在镜像中安装和配置crontab的过程。由于基础镜像中没有crontab服务,需要在打包自己镜像的Dockerfile中加入安装cron服务的步骤。FROM python:3.6-slim

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

Dockerfile

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

FROM python:3.6-slim

MAINTAINER linuxidc root@linuxidc.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中就可以正常读取了。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-11/155353.htm


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Mobilizing Web Sites

Mobilizing Web Sites

Layon, Kristofer / 2011-12 / 266.00元

Everyone has been talking about the mobile web in recent years, and more of us are browsing the web on smartphones and similar devices than ever before. But most of what we are viewing has not yet bee......一起来看看 《Mobilizing Web Sites》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具