生产中表现不同的“工头方式”是什么? 发展?那就是我们希望工头开始启动一堆 在开发中的东西,但在heroku生产中我们不需要它开始 (例如)solr。
答案 0 :(得分:22)
我遵循惯例;
Procfile
定义所有进程.foreman
设置特定的领班变量发展:
.env
为每个开发人员设置环境变量.env.example
设置开发默认值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
答案 1 :(得分:3)
Foreman使用参数来使用不同的文件(-d)和参数来指定要运行的内容。它还支持.foreman
文件,允许这些args成为默认值。有关详细信息,请参阅http://ddollar.github.com/foreman/
答案 2 :(得分:1)
之前我使用过特定于环境的Procfile
,这非常简单且工作正常。
基本上你有Procfile.development
,Procfile.production
等。每个人都可以自定义你想要开始的过程,然后通过foreman
运行它们,如下所示:
foreman start -f Procfile.development
另一种方法是引用Procfile
中的脚本,并在每个脚本中根据环境启动相应的过程。 The creator of Foreman does this并且an example from his Anvil project your reference。