在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中就可以正常读取了。
在Docker中运行crontab的更多相关文章
- 在docker中运行ASP.NET Core Web API应用程序
本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...
- .NET Core Web 应用部署到 Docker 中运行
环境介绍 : 虚拟机:VirtualBox 5.1.6 系 统:Ubuntu 16.04.1 LTS 系统准备完成后可以使用 sudo apt-get udpate 和 sudo apt-get up ...
- docker中运行ASP.NET Core Web API
在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...
- 在Docker中运行torch版的neural style
相关的代码都在Github上,请参见我的Github,https://github.com/lijingpeng/deep-learning-notes 敬请多多关注哈~~~ 在Docker中运行to ...
- ASP.NET Core 网站在Docker中运行
Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境.测试环境.UAT环境.生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署, ...
- 在Docker中运行EOS(MAC版)
在Docker中运行EOS(MAC版) 在Docker中也可以简单快速的构建EOS.IO.笔者在Mac平台下参考官方文档躺了一次河.记录如下: 安装依赖 Docker 版本 17.05或者更高 tes ...
- 在docker中运行jenkins实现代码自动发布到测试服务器
在docker中运行jenkins 用的镜像是apline版:lts-alpine,并设置正确的时区. docker run --name jenkins_master -d \ -p 8081:80 ...
- 在Docker中运行纸壳CMS并配置使用MySql
纸壳CMS是基于ASP.Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行.接下来看看如何在docker中运行纸壳CMS. GitHub:https://github.com/ ...
- 在docker中运行elasticsearch时go程序无法连接到节点
错误信息: panic: no active connection found: no Elasticsearch node available 在docker中运行es时,默认启动sniffing ...
随机推荐
- secs/gem协议
介绍SECS/GEM SEMI SECS/GEM标准概述 SECS/GEM是由国际半导体设备与材料协会(SEMI)制定的连接性标准.此连接性标准用于在设备和工厂的资讯和控制系统间建立通讯. SECS是 ...
- Confluence 6 的 Crowd 设置
名字(Name) 输入一个有意义的服务器名字,会让你在 Crowd 服务器中更好的识别你的目录服务器: Crowd Server Example Company Crowd 服务器URL(Server ...
- 『cs231n』作业3问题4选讲_图像梯度应用强化
[注],本节(上节也是)的model是一个已经训练完成的CNN分类网络. 随机数图片向前传播后对目标类优化,反向优化图片本体 def create_class_visualization(target ...
- 3.3 建立松耦合组件(MVC 模式最重要的特性之一是它支持、关注“分离”)《精通 ASP.NET MVC 5》 推荐指数:8 星半
笔者通常希望应用程序中的组件尽可能独立,而只有很少几个可控的依赖项.—— 在理想情况下,每个组件都不了解其他组件,而只是通过抽象接口来处理应用程序的其他区域.这称为松耦合 .—— 它能够使应用程序更易 ...
- kubernetes资源清单入门
创建nginx容器: kubectl run nginx-deploy8 --image=nginx:1.14-alpine --port=80 --replicas=2 deployment &qu ...
- code format using astyle
script context : #! /bin/bash for f in $(find . -name '*.c' -or -name '*.cpp' -or -name '*.h' -type ...
- typedef struct用法详解与小结
1.基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 在编程中使用typedef ...
- INTEL NUC下一代计算机 怎么进bios,进不去bios
手上有个 英特尔® NUC 套件 DE3815TYKHE 玩具一样,200大洋收来的,配置不高,配了个4G内存,加上以前的2.5笔记本硬盘. 放家里当个小服务器玩吧,挺省电的. BIOS 开启fast ...
- 浅谈:从为什么学习python到如何学好python
虽然目前的编程语言有很多,但是基础语法上的概念,本质上都是相通的.可以做到一通百通.所以没有必要为了学哪门语言纠结太多. python是目前市面上,我个人认为是最简洁&&最优雅& ...
- L1-004 计算摄氏温度
给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C.计算公式:C=5×(F−32)/9.题目保证输入与输出均在整型范围内. 输入格式: 输入在一行中给出一个华氏温度. 输出格式: 在一行中按照 ...