2015-09-08 93 views
1

我有一個Ubuntu 14.04碼頭圖像,我想安排一個python腳本執行每分鐘。我的DockerFile包含CMD ["cron","-f"]以啓動cron守護進程。 crontab條目看起來是這樣的:碼頭根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顯示cron -f運行在PID 1

我錯過了什麼?爲什麼我的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"] 
+0

哪裏crontab條目位於何處?你可以發佈你的Dockerifle嗎? – larsks

+0

@larsks我在root用戶下使用'crontab -e'來添加crontab項。請檢查dockerfile摘錄的OP。 – sadmicrowave

+0

你有沒有得到一個解決方案? – LearningSlowly

回答

2

你在哪裏使用crontab -e?在運行docker的主機上還是在容器本身上?

我看不到您要在您提供的dockerfile中添加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 
2

爲什麼使用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" ] 
+0

我會給你一些解決方案的解決方案,以解決我的問題,但我仍然想知道爲什麼cron作業沒有執行... – sadmicrowave