2013-01-13 37 views
18

什麼是在生產中表現不同的「領班方式」vs 發展?這是我們希望領班開始啓動一堆 東西在dev中,但是在heroku生產中,我們並不需要它開始 (例如)solr。領班發展與生產(導軌)

回答

3

工頭需要使用不同文件(-d)和參數來指定要運行的參數。它還支持允許這些參數成爲默認值的.foreman文件。請參閱http://ddollar.github.com/foreman/以獲取更多信息

22

我遵循約定;

  • Procfile定義所有過程
  • .foreman設置特定的工頭變量

發展:

  • .env設置環境變量爲每個開發人員
  • .env.example小號ETS默認爲發展
  • foreman start開始的所有進程

生產:

  • heroku config設置環境變量
  • heroku ps:scale開啓或關閉所需的生產

這裏的任何一個過程一個項目的例子。

Procfile:

web: bundle exec unicorn_rails -p $PORT -c ./config/unicorn.rb 
worker: bundle exec rake jobs:work 
search: bundle exec rake sunspot:solr:run 

.env.example:

# default S3 bucket 
S3_KEY=keykeykeykeykeykey 
S3_SECRET=secretsecretsecret 
S3_BUCKET=myapp-development 

.ENV

# developer's private S3 bucket 
S3_KEY=mememememememememe 
S3_SECRET=mysecretmysecret 
S3_BUCKET=myapp-development 

.foreman:

# development port is 3000 
port: 3000 
0

我以前使用過特定環境Procfile,這很簡單,工作正常。

基本上你Procfile.developmentProcfile.production等。在每個你可以定製你想要啓動的特效,然後通過foreman像這樣運行它們:

foreman start -f Procfile.development 

另一種方法是在你的Procfile參考腳本,並在每個腳本內啓動基於環境的適當過程。 The creator of Foreman does this並且具有​​。