我正在尝试构建一个基于 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 无法以正确方式复制它的问题?我应该只修复该文件,还是使用完全不同的方法?
COPY
使用和之间的唯一区别RUN
是文件的权限/etc/crontab
:使用COPY
664 和使用RUN
644。
我找不到任何/etc/crontab
需要拥有的权限,但如果您添加
RUN chmod 644 /etc/crontab
Run Code Online (Sandbox Code Playgroud)
COPY
在你的 cronjobs 运行行之后Dockerfile
(至少对我来说)。所以我认为权限必须是644