74

Herokuを使用してホストする予定の自家製Sinatraアプリケーションがあります。

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

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

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

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

4

4 に答える 4

151

2つProcfiles(例ProcfileProcfile.dev)を使用し、foremans-fオプションを使用して、開発で使用する別のオプションを選択できます。

開発中(WebプロセスProcfile.devを含む):shotgun

foreman start -f Procfile.dev

生産でforeman startは、通常をピックアップしますProcfile

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

于 2012-07-21T20:27:11.087 に答える
19

選択した回答に対する@sharagozのコメントは、私の意見では、引数を追加せずに引き続き使用foreman startでき、Heroku用にProcfileを分離しておくための最良のオプションです。

-f Procfile.devパラメーターを回避するために、そのprocfile: Procfile.dev中に.foremanファイルを作成できます– Sharagoz

私のアプリケーションのルートディレクトリに.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
于 2018-10-18T17:26:04.277 に答える
4

これは、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'

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

于 2017-06-09T23:06:19.677 に答える
2

まだこれを探している人のために、ドキュメント foremanによると、もう必要ありません。あなたは単に使うことができます:

heroku local -f Procfile.dev

于 2019-04-04T11:18:13.380 に答える