web-dev-qa-db-fra.com

Utiliser différents Procfile dans le développement et la production

J'ai une application Sinatra maison pour laquelle j'ai l'intention d'utiliser Heroku pour l'héberger.

J'utilise contremaître et fusil de chasse dans le développement, avec le Procfile suivant:

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

Cela fonctionne très bien avec le développement et la production. Mais la chose est, je ne veux pas utiliser de fusil de chasse en production car il est trop lent.

Pouvons-nous utiliser des configurations Procfile distinctes pour les développeurs et les producteurs?

58
Arnaud Leymet

Vous pouvez utiliser deux Procfiles (par exemple Procfile et Procfile.dev) et utilisez foremans -f option pour en sélectionner un autre à utiliser dans le développement:

En dev (Procfile.dev contient votre shotgun processus Web):

foreman start -f Procfile.dev

En production, foreman start récupérera le Procfile normal.

Vous pouvez également créer un répertoire bin dans votre application avec un script pour démarrer le serveur Web approprié en fonction de $RACK_ENV (une idée que j'ai trouvée dans un commentaire fait par le créateur de Foreman , donc à considérer).

130
matt

À mon avis, le commentaire de @sharagoz sur la réponse sélectionnée est la meilleure option pour vous permettre de continuer à utiliser foreman start sans ajouter d'arguments supplémentaires ET conservez votre Procfile séparé pour Heroku.

Pour éviter le paramètre -f Procfile.dev, vous pouvez créer un fichier .foreman avec procfile: Procfile.dev dedans - Sharagoz

Dans mon répertoire racine d'applications, j'ai créé un .foreman fichier et comme le dit le commentaire

. contremaître

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

Voici un moyen de le gérer avec un Procfile et des variables d'environnement. J'utilise ceci sur Heroku.

Définissez votre environnement:

export WEB_START_COMMAND='node index.js'
export WORKER_START_COMMAND='node worker.js'

Le Procfile:

web: eval '$WEB_START_COMMAND'
worker: eval '$WORKER_START_COMMAND'

Exportez différentes commandes de démarrage dans vos environnements de serveur et de développement.

2
Art Haedike

Pour ceux qui le recherchent encore, selon docsforeman n'est plus nécessaire. Vous pouvez simplement utiliser:

heroku local -f Procfile.dev

1
spygi