我有一个自制的Sinatra应用程序,我打算使用Heroku来托管它。
我在开发中使用工头和猎枪,使用以下Procfile:
web: shotgun config.ru -s thin -o 0.0.0.0 -p $PORT -E $RACK_ENV
它在开发和生产方面都很好用。但问题是,我不想在生产中使用散弹枪,因为它太慢了。
我们是否可以对开发和生产使用单独的Procfile配置?
发布于 2012-07-22 04:27:11
您可以使用两个Procfiles
(例如Procfile
和Procfile.dev
),并使用foreman
s -f
option来选择一个不同的在开发中使用:
在开发中(Procfile.dev
包含您的shotgun
web进程):
foreman start -f Procfile.dev
在生产环境中,foreman start
将拾取正常的Procfile
。
或者,你也可以在你的应用程序中创建一个bin
目录,用一个脚本来根据$RACK_ENV
启动合适的web服务器(这是我在comment made by the creator of Foreman中发现的一个想法,所以值得考虑)。
发布于 2018-10-19 01:26:04
@sharagoz对所选答案的评论,在我看来,是最好的选择,让你仍然可以使用foreman start
而不添加额外的参数,并为Heroku保留你的Procfile。
要避免使用-f Procfile.dev参数,可以创建一个包含
procfile: Procfile.dev
的.foreman文件- Sharagoz
在我的应用程序根目录中,我创建了一个.foreman
文件,正如注释所述
.foreman
procfile: Procfile.dev
Procfile文件
web: bundle exec puma -C config/puma.rb
Procfile.dev
web: bundle exec puma -C config/puma.rb
webpacker: ./bin/webpack-dev-server
发布于 2017-06-10 07:06:20
这里有一个用一个Procfile和环境变量来处理它的方法。我正在Heroku上使用这个。
设置您的环境:
export WEB_START_COMMAND='node index.js'
export WORKER_START_COMMAND='node worker.js'
Procfile:
web: eval '$WEB_START_COMMAND'
worker: eval '$WORKER_START_COMMAND'
在您的服务器和开发环境中导出不同的启动命令。
https://stackoverflow.com/questions/11592798
复制相似问题