Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

foreman start -f Procfile.dev

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

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

Ответ 2

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

Чтобы избежать параметра -f Procfile.dev, вы можете создать файл procfile: Procfile.dev с procfile: Procfile.dev в нем - 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

Ответ 3

Вот способ обработки с помощью одной переменной Procfile и среды. Я использую это на Heroku.

Задайте свою среду:

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

Профайл:

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

Экспорт другой команды запуска в среду вашего сервера и dev.

Ответ 4

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

heroku local -f Procfile.dev