Deployment de Aplicaciones en Heroku: Configuración y Solución de Errores
Resumen
Teniendo tu aplicación configurada correctamente. Realiza el despliegue en Heroku instalando su CLI en primer lugar.
Cómo hacer el despliegue en Heroku
Luego de instalar el CLI, realiza un heroku login para autenticarte. Si aún no posees una cuenta en Heroku, es el momento de crearte una de forma gratuita.
Creando proyecto en Heroku
Una vez situado en tu proyecto, utiliza el comando heroku create -a <nombre_proyecto> para crear un nuevo proyecto remoto en tu cuenta de Heroku.
Heroku, internamente, posee su propio servidor de GIT. Si realizas un git remote -v, observarás que este ha agregado a tu proyecto nuevos servidores remotos. El despliegue se hará usando los propios de Heroku.
Con el simple comando git push heroku master la aplicación demorará unos pocos minutos en desplegarse. Podrás observar el progreso en la consola.
La aplicación quedará desplegada en una URL proporcionada por Heroku similar a https://<nombre_proyecto>.herokuapp.com/, a la cual puedes acceder para observar si tu aplicación fue desplegada con éxito.
Variables de entorno en Heroku
Si tu aplicación utiliza variables de entorno debes configurar estas. De manera muy sencilla, el siguiente comando te permite configurar cada una de tus variables de entorno: heroku config:set APP_KEY=12345, mientras que el comando heroku config te permitirá ver una lista de las variables que ya están configuradas.
Recuerda que las variables de entorno son sensibles y debes cuidar quién tiene acceso a ellas.
¡Felicidades! Has desplegado tu aplicación en un entorno productivo. Ahora el mundo puede acceder a tu app.
Cuadro de código para despliegue de Heroku
heroku local web
git checkout master
git merge 14-step
git remote -v
git push heroku master
heroku logs --tail
También puedes usar el comando heroku config:set APP_KEY=12345 para configurar variables de ambiente desde el CLI y esto hace que la app se reinicie sin la necesidad de enviar un push.
No es necesario hacer un commit despues de realizar un cambio en Heroku, puedes reiniciar el deploy inicial directamente desde la plataforma Heroku
Opción: Mas -> reiniciar todos los dynos.
También puedes usar el comando heroku config:set APP_KEY=12345 para configurar variables de ambiente desde el CLI y esto hace que la app se reinicie sin la necesidad de enviar un push. 😎
es verdad que escribiste DATATBASE a proposito? jaja
Bien bañadito y perfumado el profe para el deploy 😌😎
Qué elegancia la de Francia
Deploy exitoso en Heroku
Link API
Link Repositorio Github
Moraleja, copia los textos, jamás los tipees
Hola, al intentar hacer el deploy me salio el siguiente error:
! [remote rejected] main -> main (pre-receive hook declined)
porque puede estar pasando esto ?
Lo termine subiendo a vercel porque heroku ya no es gratis XD
¿Podrían explicar o agregar un post de como añadir un CD con Github Actions y heroku para este proyecto? Intenté hacerlo, pero no lo logré. La idea de incluir github actions es poder, en primer lugar hacer la instalación de dependencias, un build del proyecto copilado a javascript y finalmente subir solo los archivos de la carpeta dist, puesto que todo el restante código me resulta innecesario subir al servidor! Desde ya, les agradecería por sumar ese bonus track que hasta ahora no lo vi con node en platzi.
Hola, claro me parece una genial idea voy a ver cuál es la mejor forma si como un bonus track, como un blog post o añadirlo a los siguientes cursos de NestJS que vamos a grabar. 🙂
me sale el siguiente error al realizar el push a heroku
error TS2307: Cannot find module 'joi' or its corresponding type declarations.
Hola estoy haciendo un despliegue con pm2.
pero me da este error
C:\PROGRAM FILES\NODEJS\NPM.CMD:1
:: Created by npm, please don't edit manually.
^
SyntaxError: Unexpected token ':'
at Object.compileFunction (node:vm:360:18)
at wrapSafe (node:internal/modules/cjs/loader:1055:15)
at Module._compile (node:internal/modules/cjs/loader:1090:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
at Module.load (node:internal/modules/cjs/loader:1004:32)
at Function.Module._load (node:internal/modules/cjs/loader:839:12)
at Object.<anonymous> (C:\Users\Edward\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.js:33:23)
at Module._compile (node:internal/modules/cjs/loader:1126:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
at Module.load (node:internal/modules/cjs/loader:1004:32)
ayudame porfa
El error que estás experimentando indica un token inesperado en el archivo npm.cmd. Esto puede deberse a un problema de sintaxis o a una edición manual incorrecta del archivo. Te recomendaría revisar el archivo npm.cmd y asegurarte de que no haya errores de sintaxis o cambios incorrectos. Si el problema persiste, puedes intentar reinstalar Node.js y npm para asegurarte de que todas las dependencias estén correctamente instaladas. Espero que esto te ayude a resolver el problema. ¡Ánimo!
yo tengo este error: "Error "@nestjs/swagger" plugin could not be found!". Ya lo revise en stackoverflow y en la doucmentación oficial pero no he pordio completarlo, alguien sabe de este error ?
yo tengo este error
"Error "@nestjs/swagger" plugin could not be found!"
ya lo revise en stackoverflow y en la doucmentación oficial pero no he pordio completarlo, alguien sabe de este error ?
En el archivo nest.json revisa que este escrito de esta forma en plugins.
Por qué el comando format no es bueno correrlo en procesos de ci?
Hola, es una genial pregunta esto se debe a que npm run format hace cambios en el código lo cual produce cambios en git lo cual hace que el proceso de CI tenga que hacer commit, add, push lo cual no es la responsabilidad de los procesos de CI.
Y como realizamos el deploy para los que no usamos Heroku , servidores propios
En ese caso lo más recomendado es que ya hagas conexiones por SSH a tu servidor y configures el ambiente para NestJS, también puedes generar conexiones con tu repositorio y hacer ciclos de integración continua, cuéntame más en que proveedor de nube lo quieres subir y te puedo enviar doc al respecto.
Le recomiendo este stream de Julian Duque un master Node, muestra diferentes forma de colocar en producción una aplicación en Node
=> https://www.youtube.com/watch?v=eNJFjX0Vyc0
Alternativa para despliegue
Actualmente es mejor desplegar el :
Seleccionas crear proyecto.
Conectas tu cuenta de github.
Seleccionas el repositorio a desplegar.
Agregas las variable de entorno.
Generas un dominio gratuito.
Notas
Tener configurado en main.ts la linea de lanzar el puerto asi
await app.listen(process.env.PORT||3000);
!!Excelente !!! Lo he logrado comparto captura de pantalla, excelente curso, a seguir con los que usan ya una base de datos y nunca pares de aprender: