Используйте разные 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