gpt4 book ai didi

docker - docker 容器中的 Cronjob 未运行

转载 作者:行者123 更新时间:2023-12-03 08:10:55 28 4
gpt4 key购买 nike

我是 cronjobs 的初学者。我花了一些时间阅读 StackOverflow 上的各种帖子,这就是我想出下面的解决方案的方法。它仍然没有按照我想要的方式工作,也许有人可以提供帮助?

这是我的 Docker 文件:

FROM conda/miniconda3
WORKDIR /app

RUN apt-get update -y
RUN apt-get install cron -y
RUN apt-get install curl -y


RUN conda update -n base -c defaults conda

RUN conda install mamba -n base -c conda-forge

COPY ./environment.yml ./environment.yml
RUN mamba env create -f environment.yml

# Make RUN commands use the new environment:
SHELL ["conda", "run", "--no-capture-output", "-n", "d2", "/bin/bash", "-c"]

#Setup cron
COPY ./cronjob /etc/cron.d/cronjob
RUN crontab /etc/cron.d/cronjob
RUN chmod 0600 /etc/cron.d/cronjob
RUN touch ./cron.log

COPY ./ ./

RUN ["chmod", "+x", "run.sh"]

ENTRYPOINT ["sh", "run.sh"]
CMD ["cron", "-f"]

我想做的是:

  1. 运行我的run.sh(我已成功使其正常工作)
  2. 在我的容器内设置一个 cronjob,该容器在名为 cronjob 的文件中定义(请参阅下面的内容)

cronjob 不工作,为什么?请注意,cron.log 为空。它永远不会被触发。

此外,crontab -l(在容器内部运行)的输出是:

$ crontab -l
# Updates every 15 minutes.
*/15 * * * * /bin/sh /app/cron.sh >> /app/cron.log 2&>1

定时任务

# Updates every 15 minutes.
*/15 * * * * /bin/sh /app/cron.sh >> /app/cron.log 2&>1

最佳答案

我也遇到了类似的问题,无法读取 crontab

我还使用过类似的东西:

COPY ./cronjob /etc/cron.d/cronjob

本地 cronjob 文件的权限为 664 而不是 644。这导致 cron 记录 Sep 29 16:21:01 0f2c2e0ddbfd cron[389]: (*system*crontab)不安全模式(组/其他可写)(/etc/cron.d/crontab)(我实际上必须安装 syslog-ng 才能看到这种情况发生)。

事实证明,如果其他人可写,cron 将拒绝读取 cron 配置。我想事后看来这是有道理的,但我完全没有意识到这一点。

将我的 cronjob 文件权限更改为 644 解决了这个问题(我在本地文件系统上执行了此操作,Dockerfile 复制了权限)

关于docker - docker 容器中的 Cronjob 未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70846431/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com