在开发和生产中使用不同的Procfile
我有一个自制的Sinatra应用程序,我打算使用Heroku来托pipe它。
我在开发中使用工头和霰弹枪,使用以下Procfile:
web: shotgun config.ru -s thin -o 0.0.0.0 -p $PORT -E $RACK_ENV
这对于开发和生产都很有效。 但事情是, 我不想在生产中使用霰弹枪,因为它太慢了。
我们可以为dev和prod使用单独的Procfileconfiguration吗?
您可以使用两个Procfiles
(例如Procfile
和Procfile.dev
)并使用foreman
的-f
选项来select一个不同的在dev中使用:
在开发( Procfile.dev
包含你的shotgun
Web进程):
foreman start -f Procfile.dev
在生产中, foreman start
将foreman start
正常的Procfile
。
或者,您可以使用脚本在您的应用程序中创build一个bin
目录,以根据$RACK_ENV
(我在Foreman的创build者发表的评论中发现的一个想法,因此值得考虑)启动相应的Web服务器。
这是用一个Procfile和环境variables来处理的方法。 我在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'
在服务器和开发环境中导出不同的启动命令。