如何在 docker 容器中运行 cron 作业

新手上路,请多包涵

我试图在 docker 容器中运行 cron 作业,但对我没有任何作用。

我的容器只有 cron.dailycron.weekly 文件。

crontab,cron.d,cron.hourly 在我的容器中不存在。

crontab -e 也不起作用。

我的容器使用 /bin/bash 运行。

原文由 Manoj Kalluri 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

这是我运行我的一个 cron 容器的方法。

Dockerfile:

 FROM alpine:3.3

ADD crontab.txt /crontab.txt
ADD script.sh /script.sh
COPY entry.sh /entry.sh
RUN chmod 755 /script.sh /entry.sh
RUN /usr/bin/crontab /crontab.txt

CMD ["/entry.sh"]

crontab.txt

 */30 * * * * /script.sh >> /var/log/script.log

入口.sh

 #!/bin/sh

# start cron
/usr/sbin/crond -f -l 8

脚本.sh

 #!/bin/sh

# code goes here.
echo "This is a script, run by cron!"

像这样构建

docker build -t mycron .

像这样跑

docker run -d mycron

添加您自己的脚本并编辑 crontab.txt,然后构建映像并运行。由于是基于alpine的,所以图片超级小。

原文由 Ken Cochrane 发布,翻译遵循 CC BY-SA 3.0 许可协议

crond 在 Alpine 上与 tiny 配合得很好

RUN apk add --no-cache tini

ENTRYPOINT ["/sbin/tini", "--"]
CMD ["/usr/sbin/crond", "-f"]

但不应作为容器主进程(PID 1)运行,因为僵尸收割问题和信号处理问题。有关详细信息,请参阅 此 Docker PR此博客文章

原文由 Jarek Przygódzki 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题