gpt4 book ai didi

ruby-on-rails - 与 VM、Docker 和 Dokku 一起使用 When 的 Cron 作业

转载 作者:行者123 更新时间:2023-12-04 17:18:48 25 4
gpt4 key购买 nike

我在 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 作业正在运行。这是我运行 crontab -l 时发生的情况当 ssh 时:
root@dashboard:~# crontab -l
no crontab for root

我对容器虚拟化很陌生,所以如果我跳过了其中的关键部分,我深表歉意,但我很难过。

最佳答案

花了我很长时间来解决这个问题 - 最终通过 crontabs 调用 rails 命令。我还在 digital ocean 服务器上使用 ubuntu 在 dokku 上上传了一个 rails 应用程序。试图让 When gem 工作......它只是没有。 whenever -i不起作用。

何时实际上不会为 dokku 环境创建任何新的 crontab。不过,它有助于弄清楚 Cron 语法!

所以这就是我在 dokku 中获得计划任务的方式:

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

  • 您可以使用 sudo crontab -r删除它,或 sudo crontab -l查看当前的 crontab
  • 将以下代码添加到新的 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 发送错误邮件通知,否则您可能会收到 “(CRON) info (No MTA installed, discarding output)”来自系统日志的错误。
  • cat /var/mail/root查看从 Cron 收到的邮件 - 如果 cronjob 无法工作,则说明错误。

  • 希望这有帮助。至少这就是让我度过难关的原因!

    关于ruby-on-rails - 与 VM、Docker 和 Dokku 一起使用 When 的 Cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739621/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com