Используйте разные Procfile в разработке и производстве

У меня есть домашнее приложение Sinatra, для которого я собираюсь использовать Heroku.

Я использую мастера и дробовик в разработке со следующим Procfile:

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

Отлично работает как с разработкой, так и с производством. Но дело в том, что я не хочу использовать дробовик в производстве, потому что он слишком медленный.

Можем ли мы использовать отдельные конфигурации Procfile для dev и prod?

3 ответа

Решение

Вы могли бы использовать два Procfiles (например Procfile а также Procfile.dev) и использовать foreman s -f возможность выбрать другой для использования в dev:

В dev (Procfile.dev содержит ваш shotgun веб-процесс):

foreman start -f Procfile.dev

В производстве, foreman start подберу нормальный Procfile,

В качестве альтернативы вы можете создать bin каталог в вашем приложении со скриптом для запуска соответствующего веб-сервера в зависимости от $RACK_ENV (Идея, которую я нашел в комментарии создателя Формана, заслуживает рассмотрения).

Комментарий @sharagoz к выбранному ответу, на мой взгляд, является лучшим вариантом, позволяющим вам по-прежнему использовать foreman start без добавления дополнительных аргументов И держите свой Procfile отдельно для Heroku.

Чтобы избежать параметра -f Procfile.dev, вы можете создать файл.foreman с procfile: Procfile.dev в нем - Шарагоз

В корневом каталоге приложений я создал .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

Вот способ справиться с этим с помощью одного 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'

Экспортируйте различные команды запуска на вашем сервере и в средах разработки.

Для тех, кто все еще ищет это, согласно документам foreman больше не нужен. Вы можете просто использовать:

heroku local -f Procfile.dev

Другие вопросы по тегам