docker 根 crontab 作业未执行
docker root crontab job not executing
我有一个 Ubuntu 14.04
docker 图像,我想在其中安排一个 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
可完全访问并由 root
拥有,并设置了 744
权限;所以可以执行。
我的 /opt/com.org.project/var/log/cron.log
文件中没有显示任何内容,/var/log/cron.log
也没有显示任何内容。然而 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"]
为什么要使用 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" ]
你在哪里使用 crontab -e
?在主机上 运行 docker 还是在容器本身?
我看不到您在提供的 docker 文件中添加 crontab 条目。我建议你像这样添加一个外部 crontab 文件:
ADD crontabfile /app/crontab
RUN crontab /app/crontab
CMD ["cron", "-f"]
文件 crontabfile
必须位于 Dockerfile
旁边。
image_folder
|
|- Dockerfile
|- crontabfile
crontabfile
的示例内容:
# m h dom mon dow command
30 4 * * * /app/myscript.py
我有一个 Ubuntu 14.04
docker 图像,我想在其中安排一个 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
可完全访问并由 root
拥有,并设置了 744
权限;所以可以执行。
我的 /opt/com.org.project/var/log/cron.log
文件中没有显示任何内容,/var/log/cron.log
也没有显示任何内容。然而 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"]
为什么要使用 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" ]
你在哪里使用 crontab -e
?在主机上 运行 docker 还是在容器本身?
我看不到您在提供的 docker 文件中添加 crontab 条目。我建议你像这样添加一个外部 crontab 文件:
ADD crontabfile /app/crontab
RUN crontab /app/crontab
CMD ["cron", "-f"]
文件 crontabfile
必须位于 Dockerfile
旁边。
image_folder
|
|- Dockerfile
|- crontabfile
crontabfile
的示例内容:
# m h dom mon dow command
30 4 * * * /app/myscript.py