如何正确构建 cron docker 镜像?

And*_*kyi 5 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"]
Run Code Online (Sandbox Code Playgroud)

...和jobs.txt文件:

* * * * * root echo "job done" >> /log.txt
Run Code Online (Sandbox Code Playgroud)

我意识到COPY命令有问题,因为当我替换

COPY jobs.txt /etc/crontab
Run Code Online (Sandbox Code Playgroud)

RUN echo '* * * * * root echo "job done" >> /log.txt' > /etc/crontab
Run Code Online (Sandbox Code Playgroud)

它完美地工作。

那么是否存在jobs.txt文件和 Docker 无法以正确方式复制它的问题?我应该只修复该文件,还是使用完全不同的方法?

Ant*_*hon 4

COPY使用和之间的唯一区别RUN是文件的权限/etc/crontab:使用COPY664 和使用RUN644。

我找不到任何/etc/crontab需要拥有的权限,但如果您添加

RUN chmod 644 /etc/crontab
Run Code Online (Sandbox Code Playgroud)

COPY在你的 cronjobs 运行行之后Dockerfile(至少对我来说)。所以我认为权限必须是644