【问题标题】:Docker cron jobDocker 定时任务
【发布时间】:2020-03-31 14:03:52
【问题描述】:

我需要在 docker/kubernetes 环境中安排一些 cron 作业,这将使用curl 命令进行一些外部服务调用。我试图使用普通的 alpine:3.6 图像,但它没有 curl

有什么建议可以用于此目的的基础图像吗?另外,如果有一些例子会很有帮助。

【问题讨论】:

标签: docker kubernetes cron


【解决方案1】:

准备您自己的 docker 映像,其中将包含您需要的软件包,或者只使用类似 https://github.com/aylei/kubectl-debug 的东西

【讨论】:

    【解决方案2】:

    我可以使用 alpine 图像作为 cronjob 作业运行 curl

    FROM alpine:3.6
    
    RUN apk --no-cache add curl bash
    RUN apk add --no-cache tzdata
    
    ENV TZ=Asia/Kolkata
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ /etc/timezone
    
    RUN mkdir -p /var/log/cron \
        && touch /var/log/cron/cron.log \
        && mkdir -m 0644 -p /etc/cron.d
    
    ADD curlurl /etc/crontabs/root
    CMD bash -c "crond -L /var/log/cron/cron.log && tail -F /var/log/cron/cron.log"
    
    #ENTRYPOINT /bin/bash
    

    curlurl 有简单的 curl 命令作为 cron 作业

    * * * * * /usr/bin/curl http://dummy.restapiexample.com/api/v1/employees >> /var/log/cron/cron.log
    # Leave one blank line below or cron will fail
    

    这工作正常。但是现在我尝试通过推送私有仓库来制作高山基础镜像,以避免每次都下载。但它停止了工作。我如何调试为什么 cron 作业不再运行。下面是我使用的方式。

    基础图像

    FROM alpine:3.6
    
    RUN apk --no-cache add curl bash
    RUN apk add --no-cache tzdata
    
    ENTRYPOINT /bin/bash
    

    用于 curl 的 Docker

    FROM my/alpine:3.6
    
    ENV TZ=Asia/Kolkata
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ /etc/timezone
    
    RUN mkdir -p /var/log/cron \
        && touch /var/log/cron/cron.log \
        && mkdir -m 0644 -p /etc/cron.d
    
    ADD curlurl /etc/crontabs/root
    CMD bash -c "crond -L /var/log/cron/cron.log && tail -F /var/log/cron/cron.log"
    

    这样做后,我无法获得任何 cron 输出。关于如何调试它的任何建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 2017-10-14
      • 2014-04-14
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多