首页 > 解决方案 > Docker 容器中的 Python Cron 作业

问题描述

我有三个文件

和 docker 文件基本上是为了安装 pip 并在某些文件夹上运行 crontab。

我的问题是:为什么在我的 docker 容器中,cron 只启动一次并退出。无法找到它的日志,因为它显示:启动定期命令调度程序:cron。

我想知道什么是正确的设置方式以及如何保持运行。

谢谢

标签: pythondockercron

解决方案


关于如何在 docker 容器中运行 cronjob 有多种方法。这是使用cronjob 文件在debian上进行cron-setup 的示例。

创建一个 crontab 文件

  * * * * * root echo "Test my-cron" > /proc/1/fd/1 2>/proc/1/fd/2

my-cron - 此文件包含间隔用户和应安排的命令。在此示例中,我们希望每分钟打印一次文本Test my-cron 。

创建一个 docker 入口点

#!/usr/bin/env bash

cron                   # start cron service

tail -f /dev/null      # keep container running

entrypoint.sh - 这是容器启动时执行的入口点。

创建一个 Dockerfile

FROM debian:latest

RUN apt-get update \ 
    && apt-get install -y cron

# Cron file
ADD ./my-cron /etc/cron.d/my-cron
RUN chmod 0644 /etc/cron.d/my-cron

# Entrypoint
ADD ./entrypoint.sh /usr/bin/entrypoint.sh
RUN chmod +x /usr/bin/entrypoint.sh

CMD [ "entrypoint.sh" ]

构建镜像

docker build . --tag my-cron

启动一个容器

docker run -d my-cron:latest

检查控制台输出

docker logs <YOUR_CONTAINER_ID> --follow 

推荐阅读