Variables de Entorno
Las variables de entorno son útiles para alimentar tu aplicación con información desde fuera de la ejecución de esa aplicación. Normalmente se utilizan para establecer cosas como los detalles de la conexión a la base de datos y las claves de la API.
Caracteres Especiales en las Variables de Entorno
En las claves de las variables de entorno, sólo puedes utilizar a-z, 0-9 o guión bajo (_
) Los valores de las variables de entorno se aplican literalmente, a excepción de los paréntesis, las comas y las comillas dobles.
Paréntesis
Los paréntesis pueden hacer que falle el proceso de construcción o lanzamiento, dependiendo de cuándo estén disponibles durante el despliegue. No pueden utilizarse en variables de entorno.
Comas
Las comas sin mayúsculas se interpretan como delimitadores y no pueden utilizarse en variables de entorno.
- Por ejemplo:
write_stock,read_orders
hará que falle el proceso de despliegue. - Para mantener una coma dentro de una cadena, escápala con una barra invertida (
\
), así:write_stock\,read_orders
— que se aplicará comowrite_stock,read_orders
.
Comillas dobles
Las comillas dobles sin escape no se tienen en cuenta o hacen que falle el proceso de despliegue.
- Por ejemplo,
"my_example_variable"
se aplicará comomy_example_variable
. - Para mantener las comillas dobles alrededor de una variable, escápalas con una barra invertida (
\
)de esta forma:\"my_example_var\"
— que se aplicará como"my_example_var"
. - Si hay comillas dobles dentro de una cadena (por ejemplo,
my_exampl"e_text
), el proceso de lanzamiento fallará. - Para mantener las comillas dobles dentro de una cadena, escápalas con una barra invertida (
\
) de esta forma:my_examp\"le_var
— que se aplicará comomy_examp"le_var
.
Variables Codificadas en Base64
Si tu variable de entorno está codificada en Base64 y experimentas problemas (por ejemplo, errores 500 en el navegador, errores de construcción, errores en tiempo de ejecución, etc.), intenta encerrar el valor de la variable entre comillas simples.
Añadir Variables de Entorno
Las variables de entorno se pueden añadir en el paso Detalles de la aplicación al añadir una aplicación o en la página Configuración de tu aplicación después de desplegarla.
En Detalles de la Aplicación
Para añadir variables de entorno al añadir tu aplicación, despliega la sección Variables de entorno, introduce los pares clave-valor y selecciona si las variables deben estar disponibles durante el tiempo de ejecución y/o el proceso de construcción.
Después del Despliegue
Para añadir variables de entorno después de la implementación, ve a la página Configuración de la aplicación, desplázate hasta la sección Variables de entorno y haz clic en Añadir variable de entorno. Añade los pares clave-valor en la ventana modal/pop-up Añadir variable de entorno y selecciona si las variables deben estar disponibles durante el tiempo de ejecución y/o el proceso de construcción. Haz clic en Desplegar cambios para añadir tu(s) variable(s) y volver a desplegar automáticamente la aplicación.
Edición de Variables de Entorno
Puede editar los nombres (claves) o valores de las variables en la página Configuración. Para editar una variable, haz clic en el icono Editar (lápiz), realiza los cambios y haz clic en Desplegar cambios para actualizar tu(s) variable(s) y volver a desplegar automáticamente la aplicación.
Cuando se crea una conexión interna y se selecciona la casilla de verificación Añadir variables de entorno…, los nombres de las variables (claves) se crean automáticamente. Algunas aplicaciones pueden esperar variables de entorno con nombres diferentes. Por ejemplo, si quieres utilizar una base de datos con Laravel, el archivo database.php contiene nombres de variables diferentes a los creados automáticamente en MyKinsta. Para utilizar los nombres de variables definidos en la aplicación, edita cada variable según sea necesario y cambia la clave para que coincida con lo que está definido en el archivo database.php.
Uso de las Variables de Entorno
El uso de las variables de entorno depende de tu aplicación. En Node, por ejemplo, puedes acceder a una variable llamada API_KEY
con process.env.API_KEY
. En PHP, utilizarías getenv('API_KEY')
.
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 causa 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.
Variables de Entorno Establecidas por Kinsta
Kinsta siempre establece PORT
como el puerto utilizado por el servidor web. Si quieres que tu aplicación interactúe con el servidor web, tendrás que utilizar esta variable de entorno. Por ejemplo, en Node.js, así es como se iniciaría un servidor:
app.listen(process.env.PORT, () => {
console.log("Weather server is up and running")
})
Variables de Entorno No Establecidas por Kinsta
Por defecto, la variable de entorno NODE_ENV
no está establecida en producción
para aplicaciones Node.js; debes añadir esta variable de entorno manualmente.
Ejemplos de Lenguaje de Variables de Entorno
El uso de las variables de entorno depende de la aplicación. La siguiente tabla muestra cómo llamar a una variable de entorno llamada API_KEY en varios lenguajes:
Lenguaje | Código |
---|---|
Ruby | ENV["API_KEY"] |
Node.js | process.env.API_KEY; |
Python | os.environ.get('API_KEY') |
Java | System.getenv("API_KEY"); |
Scala | System.getenv("API_KEY"); |
PHP | getenv('API_KEY'); |
Go | os.Getenv("API_KEY") |