我正在尝试构建一个基于 Debian 的映像来 dockerize cron 进程,但我的 cron 作业从未启动。这是我的Dockerfile
:
FROM debian:jessie
RUN apt-get update && apt-get install -y --no-install-recommends cron
COPY jobs.txt /etc/crontab
RUN touch /log.txt
CMD ["cron", "-f"]
...以及jobs.txt
文件:
* * * * * root echo "job done" >> /log.txt
我意识到该命令有问题COPY
,因为当我替换
COPY jobs.txt /etc/crontab
和
RUN echo '* * * * * root echo "job done" >> /log.txt' > /etc/crontab
它工作得很好。
那么,是否存在文件问题jobs.txt
,而 Docker 无法以正确的方式复制它呢?我应该只修复该文件,还是使用完全不同的方法?
答案1
COPY
使用和之间的唯一区别RUN
是文件的权限/etc/crontab
:使用COPY
664 和使用RUN
644。
我找不到任何需要/etc/crontab
拥有的权限,但如果您添加
RUN chmod 644 /etc/crontab
COPY
在你的 cronjobs 运行行之后Dockerfile
(至少对我来说)。所以我认为权限必须是644
答案2
我已经尝试了该问题的所有记录解决方案,但只有一个有效:
cat /etc/crontab | crontab -
如果您已经有一些条目,您不想覆盖它们。在这种情况下,请执行以下操作:
(crontab -l 2>/dev/null; cat /etc/crontab ) | crontab -