我有一个带主管的LAMP容器。

我添加一个简单的cron
* * * * * root /bin/date >> /var/log/cron.log
从我的Dockerfile中
ADD ./crons/test /etc/cron.d/testRUN chmod 0777 /etc/cron.d/test
我通过主管使用像这样的supervisor-cron.conf启动cron:

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

Cron可以正常启动,并且可以正常运行。奇怪的是,没有cronjob自动运行(应有),但是当我执行docker exec lamp crontab /etc/cron.d/test时,cron作业将启动并按预期工作。

我想念什么吗?我到处都知道cron作业是由cron自动执行的。

最佳答案

我解决了。

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

Cron不会自动启动cron作业。

但是,当我运行docker exec lamp crontab /etc/cron.d/my_cronjob_file时,一切都表现不错。这使我感到怀疑,然后我阅读了this。因此,在容器中[在dockerfile中]添加my_cronjob_file之后,我添加了RUN crontab /etc/cron.d/my_cronjob_file。这实际上是将cronjob“安装”到crontab表中。 [我不知道cron/tab的内部信息,但这是我了解的要点。]

之后,主管将提供cron服务,并且cronjob就像一个魅力一样运行。

关于linux - Cron作业无法在Docker容器内自动运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35722003/

10-16 20:27