在开发和生产中使用不同的Procfile

Arn*_*met 58 rack heroku sinatra shotgun foreman

我有一个自制的Sinatra应用程序,我打算使用Heroku来托管它.

我在开发中使用foreman和shotgun,使用以下Procfile:

web: shotgun config.ru -s thin -o 0.0.0.0 -p $PORT -E $RACK_ENV
Run Code Online (Sandbox Code Playgroud)

它适用于开发和生产.但事实是,我不想在生产中使用霰弹枪,因为它太慢了.

我们可以为dev和prod使用单独的Procfile配置吗?

mat*_*att 133

您可以使用两个Procfiles(例如ProcfileProcfile.dev)并使用foremans -f选项来选择要在dev中使用的另一个:

在开发中(Procfile.dev包含您的shotgunWeb进程):

foreman start -f Procfile.dev
Run Code Online (Sandbox Code Playgroud)

在生产中,foreman start会恢复正常Procfile.

或者,您可以bin在应用程序中使用脚本创建一个目录,以启动相应的Web服务器(取决于$RACK_ENV我在Foreman的创建者发表的评论中找到的想法,因此值得考虑).

  • 要避免使用`-f Procfile.dev`参数,可以使用`procfile:procfile.dev`创建`.foreman`文件 (13认同)

the*_*ing 7

我认为,@ sharagoz对所选答案的评论是最好的选择,它允许您在foreman start不添加其他参数的情况下仍然使用,并且将Procfile与Heroku分开。

要避免使用-f Procfile.dev参数,可以在其中创建一个.foreman文件procfile: Procfile.dev– Sharagoz

在我的应用程序根目录中,我创建了一个.foreman文件,并按照注释说明

。领班

procfile: Procfile.dev
Run Code Online (Sandbox Code Playgroud)

程序文件

web: bundle exec puma -C config/puma.rb
Run Code Online (Sandbox Code Playgroud)

Procfile.dev

web: bundle exec puma -C config/puma.rb
webpacker: ./bin/webpack-dev-server
Run Code Online (Sandbox Code Playgroud)