Развертывание двух отдельных приложений heroku из одного репозитория git

в одном репозитории git у меня есть два отдельных приложения (веб-сервер и сервер API).

Как я могу развернуть каждое приложение в своем собственном приложении Heroku?

(таким образом, есть 2 приложения heroku, одно для веб-сервера и одно для сервера api)

Примечание (перед маркировкой как дубликат): Есть несколько вопросов, похожих на этот. Большинство имеют дело с развертыванием один приложение два heroku apps-обычно с целью постановки против производства. Я ищу, чтобы развернуть два приложения два heroku приложения. (вопрос о постановке vs prod)

2 ответов


я понимаю ваш вопрос в том, что у вас есть один репозиторий Git, который содержит две совершенно отдельные программы: один сервер API и один веб-сервер.

имея в виду это предположение, вот что вы хотите сделать, шаг за шагом:

  1. перейдите в папку проекта.
  2. определение 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.

  1. создайте два новых приложения Heroku. Вы можете сделать это, запустив heroku create <desired-app-name> --remote <desired-app-name> несколько раз. Примечание: элемент --remote флаг скажет Heroku, чтобы создать git remote для каждого из ваших приложений в том же РЕПО.

  2. Далее, вам нужно сказать 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 в одном РЕПО), и все работает нормально.