web-dev-qa-db-ja.com

開発と本番で異なるProcfileを使用する

私は、Herokuを使用してホストするための自家製のシナトラアプリケーションを持っています。

開発ではフォアマンとショットガンを使用し、次のProcfileを使用します。

web: shotgun config.ru -s thin -o 0.0.0.0 -p $PORT -E $RACK_ENV

開発と本番の両方でうまく機能します。しかし、問題は、プロダクションでショットガンを使用したくない遅すぎるためです。

Devとprodの両方に別々のProcfile構成を使用できますか?

58
Arnaud Leymet

2つのProcfiles(たとえばProcfileProcfile.dev)を使用し、 foremans -fオプション を使用して別のdevで使用するもの:

Dev(Procfile.devにはshotgun Webプロセスが含まれます):

foreman start -f Procfile.dev

本番環境では、foreman startは通常のProcfileを取得します。

または、$RACK_ENVに応じて適切なWebサーバーを起動するスクリプトを使用して、アプリにbinディレクトリを作成できます(私が Foremanの作成者によるコメント)で見つけたアイデア 、検討する価値があります)。

130
matt

私の意見では、選択した回答に対する@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
7
theartofbeing

1つの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'

サーバーおよび開発環境で異なる開始コマンドをエクスポートします。

2
Art Haedike

まだこれを探している人のために、 docsforemanによるともう必要ありません。単に使用できます:

heroku local -f Procfile.dev

1
spygi