Configuración de Conexiones a Base de Datos en Heroku y Entorno Local
Clase 20 de 22 • Curso de NestJS: Autenticación con Passport y JWT
Resumen
¿Cómo configurar las variables de entorno para la conexión de base de datos en Heroku?
Iniciar un proyecto en Heroku y conectarse a una base de datos Postgres puede parecer complicado al principio, pero con la correcta configuración de las variables de entorno, el proceso se simplifica. Heroku proporciona una variable de entorno denominada DATABASE_URL que encapsula todos los datos necesarios para la conexión, eliminando la necesidad de especificar parámetros como usuario, contraseña, host, y puerto de manera individual.
¿Qué cambios realizar en el proyecto para leer la variable DATABASE_URL?
En nuestro proyecto es fundamental realizar cambios para poder leer la variable DATABASE_URL. Antes, teníamos la conexión muy segmentada:
- Protocolo (ej.
Postgres
) - Usuario
- Contraseña
- Host
- Puerto
Ahora, debemos integrar estos elementos en una única URL en formato estándar, tanto para entornos de desarrollo como de producción. En este contexto, el formato de la URL sería algo como:
postgres://usuario:contraseña@host:puerto/baseDatos
¿Cómo integrar la configuración en los módulos de base de datos?
Una vez obtenida la URL de conexión, debemos modificar los módulos de base de datos del proyecto. Aquí, pasaremos de leer variables individuales a solo necesitar la URL de conexión. Los pasos serían los siguientes:
- En el módulo donde leemos la configuración de base de datos, cambiaríamos el método actual a la lectura de la variable
POSTGRES_URL
. - La variable
POSTGRES_URL
correspondería al valor deDATABASE_URL
proporcionado por Heroku.
Por ejemplo:
const databaseURL = process.env.POSTGRES_URL;
// Usar `databaseURL` para la conexión con el DBMS
¿Qué ajustes realizar antes del 'deployment' en Heroku?
Antes de proceder al deployment, son necesarios unos ajustes:
-
Variables de entorno adicionales: Algunas configuraciones, como
DATABASE_NAME
,PORT
, o secretos comoAPI_KEY
yJW_SECRET
, deben ser gestionadas localmente y en Heroku. Asegúrate de que estas claves no se pierdan en producción. -
Validaciones: En la sección de validación de variables, asegúrate de verificar que
DATABASE_URL
esté presente cuando se ejecuta en Heroku. -
Configuración SSL: Habilitar la configuración SSL requerida. Para ello, añade lo siguiente en tu configuración de conexiones:
ssl: { rejectUnauthorized: false }
Esta configuración es crítica para asegurar las transmisiones de datos en un entorno de producción.
¿Cómo verificar y depurar después del 'deployment'?
Una vez hecho el deployment, es crucial verificar que las conexiones sean exitosas. Esto se puede hacer visitando la URL donde se haya realizado el deployment. De igual forma, el seguimiento de logs puede proporcionar información valiosa para detectar y solucionar problemas.
Para seguir los logs en tiempo real, usa el siguiente comando:
heroku logs --tail
En caso de errores relacionados con la base de datos, asegúrate de haber corrido todas las migraciones que el esquema de tu base de datos requiere. Este paso es esencial, y su falta puede resultar en mensajes de error indicando tablas o registros inexistentes.
La correcta configuración de las variables de entorno y la adaptación del proyecto para utilizar DATABASE_URL
simplifican significativamente el proceso de deployment en Heroku. Mantén la configuración ordenada y comprueba sistemáticamente el buen funcionamiento con logs para combatir posibles errores. ¡Sigue adelante y no dejes de explorar nuevas formas de optimizar y mejorar tu flujo de trabajo con Heroku!