Kinsta ofrece Nixpacks, un proyecto de código abierto mantenido por Railway, como una de las opciones para crear automáticamente la imagen del contenedor de tu aplicación basándose en tu repositorio. Los Nixpacks son scripts que se ejecutan cuando se despliega tu aplicación para instalar las dependencias de tu aplicación y configurar tu entorno.

Recomendamos utilizar Nixpacks porque utilizan menos recursos y admite más de 20 lenguajes. Puedes elegir Nixpacks al añadir una aplicación o cambiando la opción Entorno de construcción en la configuración de la aplicación (Configuración > Detalles básicos > Editar detalles).

Lenguajes Admitidos

Nixpacks admite los siguientes lenguajes:

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

Para utilizar una versión de lenguaje diferente, establece la versión en los archivos de tu aplicación.

Cuando se utiliza Nixpacks, normalmente no es necesario elegir o añadir diferentes paquetes para la construcción porque se detectan automáticamente. Si se necesitan paquetes adicionales para la aplicación, puedes definirlos en un archivo de configuración de Nixpacks.

Si quieres utilizar un lenguaje que no es compatible con Nixpacks o buildpacks, debes utilizar un archivo Dockerfile. Cuando añadas tu aplicación, puedes seleccionar la opción Utilizar Dockerfile para configurar la imagen del contenedor.

Configurar Nixpacks

Algunas aplicaciones no requieren configuración, pero otras necesitan comandos y opciones especializados para ejecutarse, como por ejemplo:

Variables de entorno — Puede que necesites configurar ciertas variables de entorno para ejecutar tu aplicación.

Procesos — Kinsta puede detectar automáticamente tu comando de proceso web. Puedes cambiarlo si es necesario, y puedes definir procesos adicionales.

Procesos en un Procfile — Puede que quieras definir tus procesos en un Procfile dentro del código de tu aplicación.

Directorios Binarios de Nixpacks

Con Nixpacks, los directorios binarios pueden diferir de los directorios binarios predeterminados para el lenguaje de la aplicación. La siguiente tabla muestra los directorios binarios utilizados para algunos de los lenguajes más comunes:

Idioma Directorio
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 Scala no tiene una ruta binaria específica por defecto como otros lenguajes compilados. Cuando compilas un programa Scala, genera bytecode que se ejecuta en la Máquina Virtual Java (JVM).

Las clases Scala compiladas suelen almacenarse en una estructura de directorios que refleja la estructura de paquetes de tu código. Esto es similar a cómo se organizan las clases Java. Por defecto, cuando compilas un archivo fuente Scala, los archivos .class compilados se colocarán en el mismo directorio que el código fuente (dentro de una estructura de subdirectorios basada en las declaraciones de paquetes).

Si es necesario, puedes instalar las herramientas de tiempo de ejecución de Scala utilizando un Dockerfile en lugar de utilizar un Nixpack.

PHP /nix/var/nix/profiles/default/bin/php
Go Go no tiene una ruta binaria específica por defecto como otros lenguajes compilados. Cuando compilas un programa Go, el ejecutable binario resultante suele colocarse por defecto en el mismo directorio que tu código fuente.

Si es necesario, puedes instalar las herramientas de ejecución de Go utilizando un Dockerfile en lugar de utilizar un Nixpack.

Documentación Relacionada