Использовать другой Procfile в разработке и производстве
У меня есть домашнее приложение Sinatra, для которого я намерен использовать Heroku для его размещения.
Я использую мастера и дробовик в разработке, со следующим Procfile:
web: shotgun config.ru -s thin -o 0.0.0.0 -p $PORT -E $RACK_ENV
Он отлично работает как с разработкой, так и с производством. Но дело в том, что я не хочу использовать дробовик в производстве, поскольку он слишком медленный.
Можем ли мы использовать отдельные конфигурации Procfile для dev и prod?
Ответы
Ответ 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