docker cron_如何正确设置Cron和Docker [如何指导]

docker cron

如果我需要在一个容器中使用linux cron并执行命令怎么办?

当我开始使用Google进行搜索时,我立即发现了2个解决方案,但两者似乎都非常糟糕:

错误的选择1:

生成自定义crontab映像,在其中复制crontab文件,然后对其他容器运行命令。

这种方法的问题是 -每次我需要更改cron命令或添加新命令时,都需要重建该映像。 从我的cron容器向其他我确实需要运行命令的容器进行调用也将是一个很大的问题。

错误的选择2:

修改容器以运行crontab。

这种方法的问题是 -我的容器将必须运行2个命令(crontab +用于运行的任何容器)-这与docker的理念相矛盾,每个容器仅应负责1个任务。

不错的选择:

在启动Docker容器的主机上运行cron。

我可以在crontab中使用这样的命令来做到这一点:

* * * * * docker exec -t {containerID} {command} >> /dev/null 2>&1

For example:
* * * * * docker exec -t $(docker ps -qf "name=docker_php_1") php artisan schedule:run >> /dev/null 2>&1

笔记:

  • 通常我会运行“ docker exec -t <container_id> php artisan schedule:run ”-但是每次重新启动容器时容器ID都会更改,并且我不想每次都更改crontab
  • $( docker ps -qf“ name = docker_php_1” )-允许基于容器名称的搜索获取容器ID
  • $( docker ps -qf“ ancestor = php:7.2-fpm” )-允许基于图像名称搜索获取容器ID
  • php artisan schedule: run- 运行 Laravel的特定命令来运行计划任务,此处仅作为示例使用

翻译自: https://hackernoon.com/how-to-setup-cron-and-docker-correctly-a-how-to-guide-9v5f36kz

docker cron

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值