【问题标题】:How can i keep crontab in file in ubuntu docker我如何将 crontab 保存在 ubuntu docker 中的文件中
【发布时间】:2016-04-30 02:49:27
【问题描述】:

我使用的是 docker,操作系统是 Ubuntu。

如果我使用crontab -e 并将数据放在那里,那么 cron 运行良好。

* * * * *  /var/www/daily.sh

但如果删除容器,那么该 crontab 也将消失。我想以某种方式将 crontab 放在像 crontabs.sh 这样的文件中,然后将其挂载到容器中,这样如果我创建容器,那么我的 cron 仍然存在。

我不知道我需要在什么位置安装它以便 cron 正常运行。像

/myhost/code/crontabs.sh: /etc/crons.daily

【问题讨论】:

    标签: linux ubuntu docker cron


    【解决方案1】:

    正如this answer 中提到的,您可以复制您的文件,添加到您的Dockerfile

    FROM ubuntu:latest
    MAINTAINER docker@ekito.fr
    
    # Add crontab file in the cron directory
    COPY crontab /etc/cron.d/crons.daily
    
    # Give execution rights on the cron job
    RUN chmod 0644 /etc/cron.d/hello-cron
    
    # Create the log file to be able to run tail
    RUN touch /var/log/cron.log
    
    # Run the command on container startup
    CMD cron && tail -f /var/log/cron.log
    

    (来源:示例“Run a cron job with Docker”(by Julien Boulay

    这样,您的图像将始终包含正确的 cron 定义。

    您可以使用cronsandbox.com 初始化“crontab”的内容,即您要复制到图像的本地文件。

    在你的情况下:0 23 * * *


    如果您不想在每次更改时创建新映像,请删除 COPY 行,并在运行时挂载该文件:

    docker run -v crontab:/etc/cron.d/hello-cron -n mycontainer myimage
    

    这样,本地文件 crontab 在容器中挂载为 /etc/cron.d/hello-cron(或您想要的任何其他名称)。
    每当您更改它时,请停止并重新启动您的容器。

    【讨论】:

    • 我读过 cron.daily 在 6.30 或 730Am 运行。但我想在晚上 11 点跑步。
    • 另外,我希望 cronfile 成为源代码的一部分,以便我可以编辑它。如果我放入 docker 文件并且在创建初始图像后将很难编辑
    • @JohnKaff 我正在编辑答案。 cron 文件将成为您的资源的一部分。每次修改它时,重建图像。
    • @JohnKaff 我已经编辑了答案以添加另一种方法,允许您保留相同的图像并仍然从源中更改 cron 文件。
    • 谢谢,这就是我要问的,现在还有一件事 hello-cron 是 crontab 本身或我想作为 cron 运行的脚本
    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 2016-02-22
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多