Crontab 和 docker

问题描述 投票:0回答:1

我的文档文件中有多个任务,但构建后只执行第一个任务,为什么会这样?

`RUN (crontab -u $(whoami) -l; echo "* * * * * /usr/local/bin/node /app/xmlTasks/index.js" ) | crontab -u $(whoami) -

RUN (crontab -u $(whoami) -l; echo "*/30 * * * * /usr/local/bin/node /app/skillspace/index.js" ) | crontab -u $(whoami) -

RUN (crontab -u $(whoami) -l; echo "*/50 * * * * /usr/local/bin/node /app/report/index.js" ) | crontab -u $(whoami) -`

我设置的时间不同,还是一样。
原因是什么?

javascript docker cron dockerfile
1个回答
0
投票

在您的情况下,仅设置第一个 cron 作业,因为每个 RUN 命令都会创建自己的 cron 配置,覆盖前一个。因此,在执行所有 RUN 命令后,只有最后一个 RUN 命令中的 cron 作业保留在最终映像中。

要解决此问题,您可以将所有 cron 作业连接到 Dockerfile 中的单个 RUN 命令中。具体方法如下:

RUN (crontab -l -u $(whoami); echo "* * * * * /usr/local/bin/node /app/xmlTasks/index.js" && \
echo "*/30 * * * * /usr/local/bin/node /app/skillspace/index.js" && \
echo "*/50 * * * * /usr/local/bin/node /app/report/index.js") | crontab -u $(whoami) -

这个 RUN 命令将所有 cron 作业配置连接到一个,确保所有 cron 作业都添加到 crontab 文件中。构建 Docker 映像后,所有 cron 作业都应该正确设置。

© www.soinside.com 2019 - 2024. All rights reserved.