【问题标题】:whenever cronjob in Rails app in docker container not working每当 docker 容器中 Rails 应用程序中的 cronjob 不工作时
【发布时间】:2017-08-23 07:23:49
【问题描述】:

我正在 docker 容器内设置一个 cronjob。 一切看起来都很好,但它不起作用。

这是我的代码的一部分。

宝石文件:

gem 'whenever', :require => false

config/schedule.rb

set :output, "log/cron.log"
env :PATH, ENV['PATH']
set :environment, 'development'

every 1.day, :at => '1:00 am' do
  rake "import"
end

every 1.minute do
  p "#{Time.now}!"
  rake "cron_test"
end

还有我的 dockerfile

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev cron postgresql-client-9.4 dos2unix
RUN touch $APP_HOME/log/cron.log
RUN bundle exec whenever --update-crontab
CMD cron && bundle exec puma

当我运行whenever 时,我得到了

PATH=/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

0 1 * * * /bin/bash -l -c 'cd /mlcot && RAILS_ENV=development bundle exec rake import --silent >> log/cron.log 2>&1'

* * * * * /bin/bash -l -c 'cd /mlcot && RAILS_ENV=development bundle exec rake cron_test --silent >> log/cron.log 2>&1'

## [message] Above is your schedule file converted to cron syntax; your crontab file was not updated.
## [message] Run `whenever --help' for more options.

我做了任何可以从谷歌找到的检查,但仍然没有任何反应。我什至没有得到log/cron.log 文件。

但是如果我直接运行 /bin/bash -l -c 'cd /mlcot && RAILS_ENV=development bundle exec rake cron_test --silent'

它有效。任何建议或意见将不胜感激。

【问题讨论】:

    标签: ruby-on-rails docker whenever


    【解决方案1】:

    我通过添加这个解决了它。

    码头文件:

    RUN gem install bundler --version 1.11.2
    
    # another line
    
    CMD cron -f && bundle exec puma
    

    并将这一行添加到schedule.rb

    ENV.each { |k, v| env(k, v) }
    

    感谢herehere

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 2021-12-29
      • 2017-05-19
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多