A Kinsta oferece Nixpacks, um projeto de código aberto mantido pela Railway, como uma das opções para criar automaticamente a imagem do contêiner do seu aplicativo com base no seu repositório. Nixpacks são scripts executados quando seu aplicativo é implantado para instalar dependências e configurar seu ambiente.

Recomendamos que você use Nixpacks porque eles usam menos recursos e são compatíveis com mais de 20 linguagens. Você pode escolher Nixpacks 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 compatíveis

O Nixpacks é compatível com as seguintes linguagens:

  • Clojure
  • Cobol
  • Crystal
  • C#/.NET
  • Dart
  • Deno
  • Elixir
  • F#
  • Go
  • Haskell
  • Java
  • Lunatic
  • Node.js
  • PHP
  • Python
  • Rust
  • Staticfile
  • Swift
  • Scala
  • Zig

Para usar uma versão de linguagem diferente, defina a versão nos arquivos do aplicativo.

Quando você usa o Nixpacks, geralmente não precisa se preocupar em escolher ou adicionar diferentes fornecedores para a build, pois eles são identificados de forma automática. Caso o seu aplicativo precisar de fornecedores extras, você pode configurá-los facilmente em um arquivo de configuração do Nixpacks.

Se quiser usar uma linguagem que não seja compatível com Nixpacks ou buildpacks, você deverá usar um Dockerfile. Ao adicionar o aplicativo, você pode selecionar a opção Usar Dockerfile para configurar a imagem do contêiner.

Configurando o Nixpacks

Alguns aplicativos não exigem nenhuma configuração, mas alguns exigem comandos e opções especializados para serem executados, como:

Variáveis de ambiente – Talvez você precise definir determinadas variáveis de ambiente para executar o aplicativo.

Processos – A Kinsta pode detectar automaticamente o comando do seu processo da web. Você pode alterar isso, se necessário, e pode definir processos adicionais.

Processos em um Procfile – Talvez você queira definir seus processos em um Procfile dentro do código do aplicativo.

Diretórios binários do Nixpacks

Com o Nixpacks, os diretórios binários podem ser diferentes dos diretórios binários padrão da linguagem do aplicativo. A tabela a seguir mostra os diretórios binários usados para algumas das linguagens mais comuns:

Linguagem Diretório
Node.js /nix/var/nix/profiles/default/bin/node
Ruby /nix/var/nix/profiles/default/bin/ruby
Python /nix/var/nix/profiles/default/bin/python
Java /nix/var/nix/profiles/default/bin/java
Scala O Scala não tem um caminho binário padrão específico como algumas outras linguagens compiladas. Quando você compila um programa Scala, ele gera bytecode executado na máquina virtual Java (JVM).

As classes Scala compiladas são normalmente armazenadas em uma estrutura de diretório que espelha a estrutura de pacote do seu código. Isso é semelhante à forma como as classes Java são organizadas. Por padrão, quando você compila um arquivo de código-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 usar um Nixpack.

PHP /nix/var/nix/profiles/default/bin/php
Go O Go não tem um caminho binário padrão específico como algumas outras linguagens compiladas. Quando você compila um programa em Go, o executável binário resultante é normalmente colocado no mesmo diretório que o 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 usar um Nixpack.

Documentação relacionada