0
我有這個Dockerfile
(這裏我使用miniconda
只是因爲我想安排一些Python腳本,但它是一個debian:jessie
泊塢窗圖像):的cron任務沒有被執行
FROM continuumio/miniconda:4.2.12
RUN mkdir -p /workspace
WORKDIR /workspace
ADD volume .
RUN apt-get update
RUN apt-get install -y cron
ENTRYPOINT ["/bin/sh", "/workspace/conf/entrypoint.sh"]
腳本entrypoint.sh
,保持容器活着是這個:
#!/usr/bin/env bash
echo ">>> Configuring cron"
service cron start
touch /var/log/cron.log
mv /workspace/conf/root /var/spool/cron/crontabs/root
chmod +x /var/spool/cron/crontabs/root
crontab /var/spool/cron/crontabs/root
echo ">>> Done!"
tail -f /var/log/cron.log
從泊塢窗文檔中關於supervisor
(https://docs.docker.com/engine/admin/using_supervisord/)看起來可能是一種選擇,以及在bash腳本選項(如我的例子),這就是爲什麼我決定去bash腳本並忽略主管。
和cron的細節/workspace/conf/root
內容是這樣的:
* * * * * root echo "Hello world: $(date +%H:%M:%S)" >> /var/log/cron.log 2>&1
(在底部的一個空行\n
)
我不能找到一種方法,看到Hello world: $(date +%H:%M:%S)
每分鐘追加到/var/log/cron.log
,但對我來說所有的cron
/crontab
設置都是正確的。
當我檢查容器的日誌,我可以看到:
>>> Configuring cron
[ ok ] Starting periodic command scheduler: cron.
>>> Done!
此外,登錄到運行容器時,我可以看到cron
守護進程運行:
[email protected]:/workspace# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 4336 1580 ? Ss+ 13:06 0:00 /bin/sh /workspace/conf/entrypoint.sh
root 14 0.0 0.0 27592 2096 ? Ss 13:06 0:00 /usr/sbin/cron
root 36 0.0 0.0 5956 740 ? S+ 13:06 0:00 tail -f /var/log/cron.log
root 108 0.5 0.1 21948 3692 ? Ss 13:14 0:00 bash
root 114 0.0 0.1 19188 2416 ? R+ 13:14 0:00 ps aux
我在做什麼錯誤?
碼頭是'類固醇過程'。如:一個過程。不是虛擬機。你不能假設'init'或'systemd'運行你只是交出'cron'守護進程任務。 –
[Docker:Cronjob不能正常工作]的可能的重複(http://stackoverflow.com/questions/24943982/docker-cronjob-is-not-working) –
從關於'supervisor'的docker文檔看起來可能是這樣的一個選項以及'bash'腳本選項(如我的例子),這就是爲什麼我決定去bash腳本並忽略'supervisor'。我不確定我明白爲什麼這個bash腳本是錯誤的。我也嘗試在bash腳本中用'cron'行替換'service cron start'行,但沒有成功。 – TPPZ