python - Docker 容器中的 Python Cron 作业
问题描述
我有三个文件
crontab : 要执行的 cron 作业列表
入口点.sh
#!/usr/bin/env bash
服务 cron 启动 python
和 docker 文件基本上是为了安装 pip 并在某些文件夹上运行 crontab。
我的问题是:为什么在我的 docker 容器中,cron 只启动一次并退出。无法找到它的日志,因为它显示:启动定期命令调度程序:cron。
我想知道什么是正确的设置方式以及如何保持运行。
谢谢
解决方案
关于如何在 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
推荐阅读
- html - Onclick 到下一个 HTML 页面在 radio-toolbar div 标签内不起作用
- php - Phalcon 模型 FindFirst 上的 NULL 值
- ruby-on-rails - 如何将此代码从haml写入ERB?
- python - 像 PyLDAVIs 这样的绘图,用于可视化列之间的常用词
- asp.net-core - 在 .net 核心应用程序中加载标准库
- flutter - 如何在颤振模式表上放置一个 iOS 风格的可关闭栏
- javascript - 防止在每次点击时添加 DOM 元素
- flutter - 如何为 ListView.builder 加载数据以从提供者的数据构建
- c# - SSIS - 将重复列设置为空
- javascript - 如何以更优雅的方式验证这一点?