【发布时间】:2021-05-07 23:43:09
【问题描述】:
在 ubuntu 机器上,我有一个使用 Dockerfile 设置的 crontab:
...
RUN apt-get update && apt-get install -y cron
...
ADD crontab /etc/cron.d/crontab
RUN chmod 0644 /etc/cron.d/crontab
RUN systemctl enable cron
RUN touch /etc/cron.d/crontab
crontab:
15 17 * * * root /home/misc/runSomething.sh
创建容器后它没有按时触发,但是如果我用 vi 手动编辑文件来测试它,它会在之后工作。直到它被编辑,它似乎被拾起。有没有人知道如何解决这个问题?
请注意,所有权等不会因编辑而改变:
root@machine:/home/gradle/src# ls -la /etc/cron.d
...
-rw-r--r-- 1 root root 50 Feb 3 14:55 crontab
...
root@machine:/home/gradle/src# vi /etc/cron.d/crontab
...
root@machine:/home/gradle/src# ls -la /etc/cron.d
...
-rw-r--r-- 1 root root 51 Feb 3 15:42 crontab
【问题讨论】:
-
在 Dockerfile 中运行
systemctl enable cron通常不会完成任何有用的事情(因为systemd可能未配置为在容器启动时启动)。您能向我们展示您的完整 Dockerfile 吗? -
谢谢,@larsks ...我已将其删除并重新测试了我将在下面的答案中描述的修复程序,它正在工作。本质上,dockerfile 的其余部分只是 apt-get 调用和证书安装