Buildpacks
Kinsta ofrece Buildpacks, un proyecto de código abierto mantenido por Heroku, como una de las opciones para determinar y crear automáticamente un contenedor para tu aplicación basándose en tu repositorio. Los buildpacks son scripts que se ejecutan cuando tu aplicación se despliega para instalar dependencias de la misma y configurar tu entorno.
Puedes elegir Buildpacks 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).
Lenguas soportadas
Admitimos los siguientes lenguajes de aplicaciones para los buildpacks:
Si quieres utilizar una versión del lenguaje diferente para tu aplicación, tendrás que establecer la versión en los archivos de tu aplicación.
Si quieres utilizar un lenguaje que no es un lenguaje Buildpack soportado, puedes comprobar primero si es un lenguaje soportado con Nixpacks. Si no lo es, deberás utilizar un Dockerfile. Cuando añadas tu aplicación, puedes seleccionar la opción Utilizar Nixpacks para configurar la imagen del contenedor o Utilizar Dockerfile para configurar la imagen del contenedor.
Configurar Buildpacks
Algunas aplicaciones no requieren ninguna configuración, pero otras requieren comandos y opciones especializadas para ejecutarse, como por ejemplo:
Variables de entorno — Es posible que necesites establecer ciertas variables de entorno para ejecutar tu aplicación.
Procesos — Kinsta puede detectar automáticamente tu comando de proceso web. Puedes cambiar esto si es necesario, y puedes definir procesos adicionales.
Procesos en un Procfile — Puedes querer definir tus procesos en un Procfile dentro del código de tu aplicación.
Añadir o Editar Buildpacks
Puedes gestionar los buildpacks en la página de Configuración de tu aplicación. Para añadir buildpacks adicionales, haz clic en Añadir buildpack. Para eliminar o cambiar el orden de los buildpacks de tu aplicación, haz clic en Editar buildpacks.
Cuando añades un paquete de construcción, se añade automáticamente al final de la lista de buildpacks, por lo que es posible que tengas que editar el orden de tus buildpacks. Puedes arrastrar y soltar los buildpacks para cambiar su orden en el modal/pop-up Editar buildpacks.
Directorios binarios de Buildpack
Con los buildpacks, 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 cada lenguaje de buildpack:
Lenguaje | Directorio |
---|---|
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 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 paquete). Si es necesario, puedes instalar las herramientas de ejecución de Scala utilizando un Dockerfile en lugar de un buildpack. |
PHP | /workspace/.heroku/php/bin/ |
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 un buildpack. |
Establecer la Versión del Lenguaje de un Buildpack
Cuando seleccionas la opción Utilizar Buildpacks para configurar la imagen del contenedor, si no especificas una versión en el código de tu aplicación, el Buildpack utilizará la última versión disponible. Si quieres utilizar una versión diferente para tu aplicación, tendrás que establecer la versión en los archivos de tu aplicación.
El método para establecer la versión varía según el idioma. A continuación hemos incluido ejemplos para los idiomas actualmente soportados.
Go
Para especificar tu versión Go, incluye lo siguiente en el archivo go.mod de tu aplicación:
// +heroku goVersion go1.11
go 1.21.1
Java
Para especificar tu versión de Java, incluye lo siguiente en el archivo system.properties de tu aplicación:
java.runtime.version=11
Node.js
Para especificar las versiones de Node.js y npm, incluye lo siguiente en el archivo package.json de tu aplicación:
"engines": {
" node ": "^16.14.0",
" npm ": "^8.3.1"
}
React
Si utilizas React y quieres especificar tu versión de React, sustituye o añade la versión de React en dependencies
de tu archivo package.json:
" react ": "^17.0.2"
Para establecer también las versiones de Node.js y npm en tu aplicación React, incluye lo siguiente en el archivo package.json de tu aplicación:
"engines": {
" node ": "^16.14.0",
" npm ": "^8.3.1"
}
PHP
Para especificar tu versión de PHP, incluye lo siguiente en el archivo composer.json de tu aplicación:
{
"require": {
"php": "~8.1.0"
}
}
Python
Para especificar tu versión de Python, incluye lo siguiente en el archivo runtime.txt de tu aplicación:
python-3.10.13
También puedes especificar las versiones de los módulos en el archivo requirements.txt:
Django ==4.1
virtualenv==20.18.0
Ruby
Para especificar tu versión de Ruby, incluye lo siguiente en tu Gemfile:
ruby "3.0.6"
Scala
Para especificar tu versión de Scala, incluye lo siguiente en el archivo build.sbt de tu aplicación:
scalaVersion := "3.2.2"