Heroku для создания приложений на основе buildpacks . Каждый buildpack-пакет знает, как создать определенный проект, например, один может знать, как устанавливать зависимости Maven и компилировать исходный код Kotlin, а другой может знать, как устанавливать гемы Ruby.
В простых случаях разработчикам не нужно слишком беспокоиться об этом. Когда пакет сборки явно не запрашивается, Heroku пытается определить, какой пакет сборки следует использовать . По сути, он перебирает официально поддерживаемые пакеты сборки в заданном порядке и использует скрипт обнаружения каждого пакета сборки , чтобы посмотреть, соответствует ли проект этому пакету сборки.
Как только он находит соответствующий пакет сборки, он перестает искать. В простых случаях этого часто достаточно. Но каждый buildpack предназначен для генерации довольно скудного изображения; инструменты, которые вы могли бы ожидать в обычной Linux-системе, не обязательно будут присутствовать. В частности, пакет сборки Java / Kotlin не даст вам двоичный файл python
.
Хорошей новостью является то, что с небольшим количеством конфигурации вы можете использовать несколько пакетов сборки .
- Сначала установите основной пакет сборки:
heroku buildpacks:set heroku/java
- Затем добавьте ваш вторичный пакет сборки:
heroku buildpacks:add --index 1 heroku/python
Убедитесь, что ваши пакеты сборки показаны в правильном порядке (сначала Python, затем Java), используя heroku buildpacks
Последний пакет сборки в списке будет использоваться для определения типов процессов для приложения. Любые типы процессов, определенные в более ранних сборках, будут игнорироваться.
Наконец, вам может понадобиться добавить пустой файл requirements.txt
, чтобы предотвратить сбой сборки пакета Python. Кроме того, вы можете добавить любые зависимости Python, которые у вас могут быть.
Если у вас есть зависимости Python, рассмотрите возможность использования Pipfile
и Pipfile.lock
вместо requirements.txt
. Это приведет к тому, что ваше приложение будет построено с использованием pipenv
вместо pip
.