2014-11-04 97 views
3

我在Ubuntu 14.04的Docker容器中有一個Ruby on Rails應用程序。我使用Dokku設置了部署,但我不確定如何讓我的cron作業正常工作。Cron作業使用每當VM,Docker和Dokku

目前我使用的whenever gem,讓我做喜歡的事很簡單:

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

問題是,我認爲我部署使用git push dokku master每次它重置容器設置回它的默認從而刪除我所有的cron時間表。

於是我想,也許cron的需要被調度的容器外,並在虛擬機級代替。

我目前還沒有看到運行不管我做任何cron作業。這裏是發生了什麼,當我運行crontab -l SSH方式登錄時:

[email protected]:~# crontab -l 
no crontab for root 

我是很新,容器的虛擬化,所以我很抱歉,如果我已經跳過了這方面的一個重要組成部分,但我是一個難倒。

回答

6

我花了永遠的工作這一個 - 結束了通話rails命令,而不是通過的crontab。我還在數字海洋服務器上使用ubuntu上傳了一個rails應用程序。試圖讓每當寶石工作...它只是沒有。 whenever -i不起作用。

每當實際上並不創造的dokku環境的任何新的crontab。儘管搞清楚了Cron的語法,這很好!

所以這是我得到了計劃任務dokku工作...

  1. 手動創建你通過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) info (No MTA installed, discarding output)」錯誤。

  • cat /var/mail/root查看郵件從cron收到 - 指出錯誤,如果一個cronjob無法工作。

  • 希望這會有幫助。這至少讓我度過了一段時間!

    +0

    一個很好的解決方法比爾頓 - 謝謝你! – Anthony 2014-11-22 19:40:36

    +0

    非常好@Bilton Tran,它就像一個魅力! – 2016-02-11 20:41:32

    +0

    良好的解決方法,但我相信這是很難維護,每當無法解決問題時,我也想過使用'run',我試圖找到一個更強大的替代方案,儘管如此。 – Laurent 2018-02-08 16:23:28

    1

    只要可能因爲cron守護進程未在Docker/Dokku容器中運行而無法正常工作。 Docker將only run the processes it is told to,使用CMDRUN指令或由其中一個指令執行的腳本。

    Dokku傢伙明確表示,cron is not supported in Dokku,雖然沒有說明爲什麼。在DokkuBuildstep和和Dokku base image repos中快速搜索cron不會產生任何結果,因此Dokku似乎是在構建/運行應用程序時從未啓動cron服務的情況。

    他們建議的解決方案是在主機上設置cron作業(正如您已經想到的那樣),使用web_based scheduling service或嘗試Heroku的Scheduler

    +0

    感謝Nick,這裏分享了一些很棒的信息。 – Anthony 2014-11-22 19:39:26

    +0

    注:雖然dokku目前*不*管理cron,我們* *有官方文檔說明如何與cron一起使用dokku [這裏](http://dokku.viewdocs.io/dokku/deployment/one-off -processes /)。 – 2016-02-14 04:55:37