2017-08-23 10 views
1

ドッカーコンテナの中にあるときはいつでもcronjobを設定しています。 すべてはうまく見えますが、うまく機能しません。DockerコンテナのRailsアプリのcronjobが動作しないとき

ここに私のコードの一部です。

Gemfile:

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. 
を取得

私はGoogleから見つけることができるすべてのチェックを行いますが、まだ何も起こりません。私もlog/cron.logファイルを取得していない。

しかし、私は実行 /bin/bash -l -c 'cd /mlcot && RAILS_ENV=development bundle exec rake cron_test --silent'

を向けている場合には動作します。どんな提案やアドバイスも感謝します。

答えて

1

これを追加して解決しました。

Dockfile:

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に次の行を追加します。

関連する問題