Al desplegar una aplicación, si hay un problema con el despliegue, puedes ver uno de los siguientes errores:

Tu aplicación ha experimentado un error de despliegue. Consulta nuestra documentación y, si sigues teniendo problemas, ponte en contacto con nuestro equipo de soporte.

Fallo en el proceso de construcción
Tipo de fallo de construcción desconocido.

Si el proceso de despliegue falla inmediatamente, o si el proceso de construcción falla, no se crean pods, y los registros de tiempo de ejecución no existen, un comando de inicio incorrecto en el proceso web es más a menudo la causa (o un ENTRYPOINT incorrecto en el Dockerfile si su aplicación se construye a partir de un Dockerfile).

Si el proceso de despliegue se ejecuta durante uno o dos minutos y luego falla, suele significar que se crearon los pods, pero algo salió mal y el proceso se detuvo. En este caso, debes comprobar los registros de ejecución de la aplicación para identificar cualquier mensaje de error. Los mensajes de error pueden ayudarte a identificar fallos en el código de la aplicación para que puedas depurar el problema.

Si no puedes identificar el problema, comprueba lo siguiente, y si el problema persiste, ponte en contacto con nuestro equipo de Soporte.

Repositorio Git

Comprueba tu repositorio para asegurarte de que se han introducido en él todos los archivos correctos para tu aplicación.

Idioma

Cuando añades tu aplicación y eliges utilizar Nixpacks o Buildpacks para crear la imagen contenedora de tu aplicación, determinamos y configuramos automáticamente un contenedor para tu aplicación. Cuando utilices Nixpacks o Buildpacks, si no quieres que se utilice la versión por defecto o la última disponible del lenguaje, debes establecer la versión del lenguaje en los archivos de tu aplicación. Para más detalles, consulta nuestra documentación sobre cómo especificar una versión de lenguaje para Buildpacks o cómo especificar una versión de lenguaje para Nixpacks.

Además, si despliegas una aplicación PHP o Python con Nixpacks y el despliegue falla cuando se construye la imagen del contenedor, lo más probable es que se deba a que falta una versión del lenguaje en el código de la aplicación, sobre todo si el despliegue funciona con Buildpacks pero no con Nixpacks. Comprueba lo siguiente para asegurarte de que la versión del idioma está configurada:

PHP

Si hay un archivo composer.json en tu repositorio, debe contener la clave require con la versión de PHP, como la siguiente:

{
  "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

Comando de Inicio o ENTRYPOINT

El comando de Inicio para el proceso web inicia su aplicación. Si es incorrecto, la aplicación no se ejecutará. Puedes comprobar el comando en un par de lugares en MyKinsta:

  • Procesos > Procesos de tiempo de ejecución > Proceso web.
  • O Despliegues > Historial, selecciona un despliegue para ver los detalles, luego haz clic en Proceso de despliegue bajo Progreso del despliegue.
Proceso de despliegue correcto en los detalles del Despliegue.
Proceso de despliegue correcto en los detalles del Despliegue.
Proceso de despliegue fallido en los detalles del Despliegue.
Proceso de despliegue fallido en los detalles del Despliegue.

Si tu aplicación utiliza un Dockerfile para configurar su imagen de contenedor, debes especificar el ENTRYPOINT en el Dockerfile para ejecutar un contenedor. Para más información sobre cómo especificar el ENTRYPOINT de tu aplicación, consulta la referencia Dockerfile.

Para más detalles sobre qué comando utilizar en función del idioma de tu aplicación, consulta los ejemplos proporcionados en nuestra documentación Comando de Inicio de Aplicación.

Ruta de Construcción o Contexto Dockerfile

Cuando añades tu aplicación, puedes elegir entre configurar la imagen del contenedor automáticamente con un Nixpack o un Buildpack o utilizar un Dockerfile para configurar la imagen del contenedor.

  • Ruta de construcción: Esto sólo se aplica a Nixpacks y Buildpacks. Esta es la ruta en el repositorio de los archivos necesarios para construir la aplicación. La mayoría de las aplicaciones se construyen desde el root del repositorio, y la ruta de construcción por defecto es esta (.). Si tienes una ruta de construcción diferente, especifícala aquí. Por ejemplo, si tu aplicación necesita ser construida desde un subdirectorio (ej. app), introduce la ruta de ese subdirectorio en el campo Ruta de construcción: app. Esto también es útil si tienes un monorepo.
  • Contexto: Esto sólo es aplicable a Dockerfiles. Esta es la ruta en el repositorio a la que necesitamos acceder para poder construir tu aplicación. La mayoría de las aplicaciones se construyen desde el root del repositorio, y puedes introducir el root del repositorio (.) en el campo Contexto. Si tu aplicación necesita ser construida desde un subdirectorio (por ejemplo, app), introduce la ruta de ese subdirectorio en el campo Contexto: app.

Puedes ver y cambiar la ruta de construcción o el Contexto Dockerfile en la Configuración de tu aplicación.

Variables de Entorno

Las variables de entorno proporcionan a tu aplicación información externa a la ejecución de esa aplicación. Una variable de entorno incorrecta puede impedir que se ejecute tu aplicación. Puedes comprobar tus variables de entorno en Configuración > Variables de entorno.

Variables de entorno de tu aplicación.
Variables de entorno de tu aplicación.

Confirma que existen las variables de entorno correctas y que contienen valores válidos. Hay un par de cosas importantes que debes tener en cuenta al crear y comprobar las variables de entorno:

  • Cada clave debe ser única, y una clave sólo puede añadirse una vez.
  • Los paréntesis pueden hacer que falle el proceso de construcción o despliegue, dependiendo de cuándo estén disponibles durante el despliegue. No pueden utilizarse en variables de entorno.
  • Las comas no escapadas son interpretadas como delimitadores por el proceso de despliegue, por lo que no pueden utilizarse en variables de entorno. Si necesitas utilizar una coma en el valor de tu variable de entorno, debes escaparla con una barra invertida (\).
  • Las comillas dobles no escapadas no se tendrán en cuenta o harán que falle el proceso de despliegue. Si necesitas utilizar comillas dobles en el valor de tu variable de entorno, debes escaparlas con una barra invertida (\).

Conexiones Internas y el Proceso de Construcción

Las conexiones internas sólo están disponibles durante el tiempo de ejecución; no están disponibles durante el proceso de construcción.

Si tu aplicación intenta conectarse a una base de datos utilizando una conexión interna durante el proceso de construcción, esto provoca un error que dice que la base de datos no está en ejecución, lo que hace que la construcción falle. Esto es de esperar porque la conexión interna no está activa durante la construcción; sólo se puede utilizar durante el tiempo de ejecución.

Hay un par de maneras de solucionar esto.

Opción 1: Mover la lógica que se conecta a la base de datos desde el comando de construcción de la aplicación al comando de inicio. Por ejemplo: si tienes un comando como prisma migrate en el proceso de construcción y mueves ese comando al comando de inicio, tu aplicación sólo accederá a la base de datos durante el tiempo de ejecución, y la construcción será exitosa.

Opción 2: Añadir variables de entorno separadas según sea necesario para la conexión a la base de datos, una disponible para el proceso de construcción, y la otra sólo para el tiempo de ejecución. Las claves pueden ser las mismas (por ejemplo, DB_CONNECTION_URL) siempre y cuando una sólo esté disponible durante el proceso de construcción y la otra sólo durante el tiempo de ejecución. Utiliza los detalles de la conexión externa de la base de datos (Bases de datos > nombre de la base de datos > Información > Conexiones externas) para los valores de las variables que se utilizarán en el proceso de construcción.

Puerto

Para el alojamiento de aplicaciones, sólo están abiertos los puertos 80 y 443. Si tu aplicación expone algún puerto, debes utilizar el 8080.

Nombre de Paquete Inválido

Un nombre de paquete inválido en package.json puede causar un error. Por ejemplo, no utilices «js» o «node» en el nombre. Para más detalles, mira los detalles del manejo de package.json de npm en npm Docs.

Documentación Relacionada