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" ]