Развертывание двух отдельных приложений heroku из одного репозитория git
в одном репозитории git у меня есть два отдельных приложения (веб-сервер и сервер API).
Как я могу развернуть каждое приложение в своем собственном приложении Heroku?
(таким образом, есть 2 приложения heroku, одно для веб-сервера и одно для сервера api)
Примечание (перед маркировкой как дубликат): Есть несколько вопросов, похожих на этот. Большинство имеют дело с развертыванием один приложение два heroku apps-обычно с целью постановки против производства. Я ищу, чтобы развернуть два приложения два heroku приложения. (вопрос о постановке vs prod)
2 ответов
я понимаю ваш вопрос в том, что у вас есть один репозиторий Git, который содержит две совершенно отдельные программы: один сервер API и один веб-сервер.
имея в виду это предположение, вот что вы хотите сделать, шаг за шагом:
- перейдите в папку проекта.
- определение
Procfile
в корне вашего проекта. Это расскажет Heroku, как запустить ваш веб-сервер и сервер API.
вот как вы может понадобиться ваш Procfile
посмотреть (пример):
web: node web/index.js
api: node api/index.js
в моем примере выше: я определяю два типа динасов Heroku - один называется web
и api
. Для каждого из них вам нужно будет сообщить Heroku, какую команду запустить, чтобы запустить соответствующий сервер. В этом примере я бы запустил node web/index.js
запустить мой сайт, и node api/index.js
для запуска моей службы API.
создайте два новых приложения Heroku. Вы можете сделать это, запустив
heroku create <desired-app-name> --remote <desired-app-name>
несколько раз. Примечание: элемент--remote
флаг скажет Heroku, чтобы создать git remote для каждого из ваших приложений в том же РЕПО.-
Далее, вам нужно сказать Heroku, чтобы запустить фактическое веб-приложение на одном приложении Heroku, и ваш сервис API на другом приложении Heroku. Вы можете сделать это с помощью Heroku CLI:
$ heroku ps:scale web=1 --remote webserver-app-name $ heroku ps:scale api=1 --remote apiserver-app-name
эти команды:
- запустите один веб-dyno для вашего веб-сервера Приложения Heroku.
- запустите один API dyno для вашего приложения apiserver Heroku.
как вы можете видеть выше, с помощью ps:scale
команда вы можете контролировать, какие типы команд Heroku будет работать от вашего Procfile
и сколько экземпляров каждого из вас хотели бы иметь.
надеюсь, это поможет!
на решение, предложенное rdegges к сожалению, больше не работает. См.:
тип веб-процесса особенный, поскольку это единственный тип процесса, который будет получать HTTP-трафик от маршрутизаторов Heroku. Другие типы процессов могут быть названы произвольно.
С в Heroku документации. Так что вы не сможете иметь api
и web
в Procfile оба подвергая веб-приложения.
вверх-к-дата решение
правильный способ решить эту проблему-использовать этот buildpack, предоставленный командой Heroku:Heroku Multi Procfile buildpack:
представьте, что у вас есть одна база кода, в которой есть несколько разных приложений... или, по крайней мере, возможность запустить несколько разные приложения. Или, может быть, Вы Google с вашим Mono РЕПО?
в любом случае, как вы справляетесь с этим на Heroku? А ты-нет. Heroku приложения предполагают одно РЕПО в одно приложение.
введите Multi Procfile buildpack, где каждое приложение получает Procfile!
Я использую этот buildpack в течение нескольких месяцев в репозитории, используя рабочие области yarn (несколько узлов и приложений React в одном РЕПО), и все работает нормально.