Buildpacks
A Kinsta oferece Buildpacks, um projeto de código aberto mantido pelo Heroku, como uma das opções para determinar e criar automaticamente um contêiner para o seu aplicativo com base em seu repositório. Buildpacks são scripts executados quando seu aplicativo é implantado para instalar dependências para o seu aplicativo e configurar seu ambiente.
Você pode escolher Buildpacks ao adicionar um aplicativo ou ao alterar a opção Ambiente de build nas configurações do aplicativo (Configurações > Detalhes básicos > Editar detalhes).
Linguagens suportadas
Suportamos as seguintes linguagens de aplicativos para Buildpacks:
Se você quiser usar uma versão em outra linguagem para o seu aplicativo, você precisará configurar a versão nos arquivos do seu aplicativo.
Se quiser usar uma linguagem que não seja compatível com o Buildpack, primeiro você pode verificar se ele é compatível com o Nixpacks. Se não for, você deverá usar um Dockerfile. Ao adicionar seu aplicativo, você pode selecionar a opção Usar Nixpacks para configurar a imagem do contêiner ou Usar Dockerfile para configurar a imagem do contêiner.
Configure os Buildpacks
Alguns aplicativos não requerem configuração, mas outros requerem comandos e opções especializadas para serem executados, como, por exemplo:
Variáveis de ambiente — Você pode precisar definir certas variáveis de ambiente para executar seu aplicativo.
Processos — Kinsta pode detectar automaticamente seu comando de processo da web. Você pode alterar isso, se necessário, e pode definir processos adicionais.
Processos em um Procfile — Você pode querer definir seus processos em um Procfile no código do seu aplicativo.
Adicione ou edite buildpacks
Você pode gerenciar buildpacks na página de Configurações do seu aplicativo. Para adicionar Buildpacks adicionais, clique em Adicionar buildpack. Para remover ou alterar a ordem dos buildpacks do seu aplicativo, clique em Editar buildpacks.
Quando você adiciona um buildpack, ele é automaticamente adicionado ao final da lista de buildpacks, então você pode precisar editar a ordem dos buildpacks. Você pode arrastar e soltar os buildpacks para alterar sua ordem no menu Editar buildpacks modal/pop-up.
Diretórios binários do buildpack
Com buildpacks, os diretórios binários podem diferir dos diretórios binários padrão para a linguagem do aplicativo. A tabela a seguir mostra os diretórios binários usados para cada linguagem de buildpack:
Linguagem | Diretório |
---|---|
Node.js | /layers/heroku_nodejs-engine/dist/bin/node |
Ruby | /usr/bin/ruby |
Python | /usr/bin/python |
Java | /layers/heroku_jvm/openjdk/bin/java |
Scala | Scala não possui um caminho binário padrão específico como algumas outras linguagens compiladas. Quando você compila um programa Scala, ele gera bytecode que é executado na Máquina Virtual Java (JVM). As classes Scala compiladas são tipicamente armazenadas em uma estrutura de diretório que espelha a estrutura de pacotes do seu código. Isso é semelhante à forma como as classes Java são organizadas. Por padrão, quando você compila um arquivo-fonte Scala, os arquivos .class compilados serão colocados no mesmo diretório que o código-fonte (dentro de uma estrutura de subdiretório baseada nas declarações de pacote). Se necessário, você pode instalar as ferramentas de tempo de execução do Scala usando um Dockerfile em vez de um buildpack. |
PHP | /workspace/.heroku/php/bin/ |
Go | Go não possui um caminho binário padrão específico como algumas outras linguagens compiladas. Quando você compila um programa Go, o executável binário resultante é tipicamente colocado no mesmo diretório que o seu código-fonte, por padrão. Se necessário, você pode instalar as ferramentas de tempo de execução do Go usando um Dockerfile em vez de um buildpack. |
Defina a versão da linguagem de um buildpack
Quando você seleciona a opção de Usar Buildpacks para configurar a imagem do contêiner, se você não especificar uma versão no código do seu aplicativo, o Buildpack usará a versão mais recente disponível. Se você deseja usar uma versão de linguagem diferente para o seu aplicativo, você precisará definir a versão nos arquivos do seu aplicativo.
O método para definir a versão varia de acordo com o idioma. Abaixo nós incluímos exemplos para os idiomas suportados atualmente.
Go
Para especificar sua versão Go, inclua o seguinte no arquivo go.mod do seu aplicativo:
// +heroku goVersion go1.11
go 1.21.1
Java
Para especificar sua versão Java, inclua o seguinte no arquivo system.properties do seu aplicativo:
java.runtime.version=11
Node.js
Para especificar sua versão Node.js e npm, inclua o seguinte no arquivo package.json do seu aplicativo:
"engines": {
"node": "^16.14.0",
"npm": "^8.3.1"
}
React
Se você está usando o React e deseja especificar sua versão do React, substitua ou adicione a versão do React nas dependencies
do seu arquivo package.json:
"react": "^17.0.2"
Para também definir as versões do Node.js e npm em seu aplicativo React, inclua o seguinte no arquivo package.json do seu aplicativo:
"engines": {
"node": "^16.14.0",
"npm": "^8.3.1"
}
PHP
Para especificar a versão do PHP, inclua o seguinte no arquivo composer.json do seu aplicativo:
{
"require": {
"php": "~8.1.0"
}
}
Python
Para especificar sua versão Python, inclua o seguinte no arquivo runtime.txt do seu aplicativo:
python-3.10.13
Você também pode especificar as versões dos módulos dentro do arquivo requirements.txt:
Django==4.1
virtualenv==20.18.0
Ruby
Para especificar sua versão Ruby, inclua o seguinte em seu arquivo Gemfile:
ruby "3.0.6"
Scala
Para especificar sua versão Scala, inclua o seguinte no arquivo build.sbt do seu aplicativo:
scalaVersion := "3.2.2"