docker root crontab作业不执行

我有一个Ubuntu 14.04泊坞窗图像,我想安排一个python脚本执行每一分钟。 我的DockerFile包含CMD ["cron","-f"]以启动cron守护进程。 crontab条目如下所示:

 0,1 * * * * root python /opt/com.org.project/main.py >> /opt/com.org.project/var/log/cron.log 

/opt/com.org.project/main.py是完全可访问的,拥有744权限, 所以可以执行。

我的/opt/com.org.project/var/log/cron.log文件中没有显示任何内容,也没有显示/var/log/cron.log文件。 然而ps aux | grep cron ps aux | grep cron显示在PID 1运行的cron -f

我错过了什么? 为什么我的cron作业不在容器中运行?

这里是我请求的DockerFile内容:

 FROM ubuntu # Update the os and install the dependencies needed for the container RUN apt-get update \ && apt-get install -y \ nano \ python \ python-setuptools \ python-dev \ xvfb \ firefox # Install PIP for python package management RUN easy_install pip CMD ["cron", "-f"] 

你在哪里使用crontab -e ? 在运行docker或容器本身的主机上?

我看不到你在你提供的dockerfile中添加一个crontab项。 我build议你添加一个像这样的外部crontab文件:

 ADD crontabfile /app/crontab RUN crontab /app/crontab CMD ["cron", "-f"] 

文件crontabfile文件必须位于Dockerfile旁边。

 image_folder | |- Dockerfile |- crontabfile 

crontabfile示例内容:

 # mh dom mon dow command 30 4 * * * /app/myscript.py 

为什么使用cron? 只需编写一个如下的shell脚本:

 #!/bin/bash while true; do python /opt/com.org.project/main.py >> /opt/com.org.project/var/log/cron.log sleep 60 done 

然后把它设置为入口点。

 ENTRYPOINT ["/bin/bash", "/loop_main.sh" ]