加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Whenever VM,Docker和Dokku的Cron作业

发布时间:2020-12-17 03:49:23 所属栏目:百科 来源:网络整理
导读:我在Ubuntu 14.04上的Docker容器中有一个 Ruby on Rails应用程序.我使用Dokku设置部署,但我不确定如何让我的cron作业正常工作. 目前我正在使用whenever gem,它允许我做一些简单的事情: every 5.minutes do runner 'MyModel.run_something'end 问题是我认为
我在Ubuntu 14.04上的Docker容器中有一个 Ruby on Rails应用程序.我使用Dokku设置部署,但我不确定如何让我的cron作业正常工作.

目前我正在使用whenever gem,它允许我做一些简单的事情:

every 5.minutes do
  runner 'MyModel.run_something'
end

问题是我认为每次使用git push dokku master进行部署时,它会重置容器并将其设置回默认设置,从而删除所有cron时间表.

所以我想也许cron调度需要在容器外部而在VM级别.

无论我做什么,我目前都没有看到任何cron工作正在运行.这是当我在ssh’d时运行crontab -l时会发生什么:

root@dashboard:~# crontab -l
no crontab for root

我对容器虚拟化很陌生,所以如果我跳过了关键部分,我很抱歉,但我很难过.

解决方法

让我永远工作这个 – 最后通过crontabs调用rails命令.我还在数字海洋服务器上使用ubuntu在dokku上上传了一个rails应用程序.试图让每当宝石工作……它只是没有.每当-i不起作用.

每当实际上没有为dokku环境创建任何新的crontabs.不过要弄清楚Cron的语法是好的!

这就是我如何让计划任务在dokku中工作……

>通过sudo crontab -e手动创建自己的crontab,这将在vi / vim中打开它

您可以使用sudo crontab -r删除它,或使用sudo crontab -l查看当前的crontabs

>将以下代码添加到新的crontab

以下代码将每1分钟执行一次.

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
* * * * * /bin/bash -c 'dokku run appname rails r MyModel.run_something'

使您的环境变量等同于env命令中的变量

> grep CRON / var / log / syslog查看输出日志以进行故障排除.您可能必须通过sudo apt-get install postfix安装postfix,以便Cron发送错误的邮件通知,否则您可能会从syslog获得“(CRON)信息(没有安装MTA,丢弃输出)”错误.
> cat / var / mail / root查看从Cron收到的邮件 – 如果cronjob无法正常工作则说明错误.

希望这很有帮助.这至少让我了解了!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读