2016-03-01 233 views
3

我有一个LAMP容器和主管。Cron作业没有在Docker容器内自动运行

我添加了一个简单的cron

* * * * * root /bin/date >> /var/log/cron.log

从我Dockerfile

ADD ./crons/test /etc/cron.d/test RUN chmod 0777 /etc/cron.d/test

我通过主管开始的cron与supervisor-cron.conf这样的:

[program:cron] 
command=/bin/bash -c "cron -f" 
numprocs=1 
autostart=true 
autorestart=true 
startretries=2 

铬在开始罚款并保持和运行。奇怪的是,没有cronjob自动运行[因为它应该],但是当我执行docker exec lamp crontab /etc/cron.d/test时,cron作业开始并按预期工作。

我错过了什么吗?到处都有我读过cron作业是由cron自动执行的。

回答

4

我解决了它。

我试着在/ etc/crontab和/etc/cron.d/中设置它们。

Cron没有自动启动cron作业。

但是,当我运行​​都打得不错。这让我感到怀疑,然后我读了this。所以,在容器[在dockerfile]中添加my_cronjob_file后,我添加了RUN crontab /etc/cron.d/my_cronjob_file。这实质上是将cronjob安装到crontab表中。 [我不知道cron/tab的内部结构,但这是我理解的要点。]。

之后,cron服务由主管发起,cronjob像魅力一样运行。

+0

请不要忘记my_cronjob_file上的cron扩展模式0600。所以: ** $搭配chmod 0600 /etc/cron.d/my_cronjob_file** 否则你会得到这样的:'4月14日4时21分05秒的主机名/ usr/sbin目录/ cron的[2990]:(根)INSECURE模式(模式0600预计)(crontabs /根)' –

+0

我认为它的工作,但它仍然不适合我。 Cron服务在启动码头时未运行 –