如何正确构建 cron docker 镜像?

如何正确构建 cron docker 镜像?

我正在尝试构建一个基于 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:使用COPY664 和使用RUN644。

我找不到任何需要/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 -

相关内容