Llega el momento del despliegue de tu aplicación en un entorno productivo. Utilizaremos Heroku, uno de los proveedores de servidores Cloud más utilizado y fácil de utilizar de la industria.
Configuración del proyecto al usar Heroku
Preparar tu aplicación para Heroku requiere de algunas configuraciones sencillas.
Configuración de puerto y CORS
Heroku, por defecto, usa una variable de entorno llamada PORT para levantar la aplicación en un puerto aleatorio. Asegúrate de configurar esta variable dinámica en el bootstrap de tu app, además de activar CORS para no tener problemas con el mismo. Agrega las configuraciones en el archivo main.ts.
Edita el archivo package.json para especificar la versión de NodeJS que tu aplicación necesita con la siguiente configuración:
"engines":{"node":"14.x"},
Configuración de Heroku
Heroku requiere de un pequeño archivo adicional en la raíz de tu proyecto llamado Procfile que contiene el comando que da inicio a tu proyecto:
web: npm run start:prod
Además, Heroku posee su propio CLI que nos ayudará en el despliegue de cualquier aplicación. Instálalo dependiendo tu sistema operativo para estar listo para el despliegue de tu app.
Hay muchos cursos en Platzi que tienen uno o dos videitos de Heroku, todos muy parecidos. Vendría bien un curso más completo de este PaaS que es muy utilizado.
No ocupas un curso, es muy intuitivo.
¿Decís que los pipelines de Heroku son intuitivos?
Me refiero a conceptos más avanzados DevOps, no un simple deploy de un app.
Estaría genial actualizar esta clase en especifico ya que heroku ya dejó de ser gratuito.
Los conceptos que tomas en una plataforma llevarlos a otra suele ser una configuracion similar, debes adaptarte a la ui de las nuevas plataformas, por lo general se usan terminos similarles, por ejemplo yo uso render el cual ofrece una capa gratuita y la UI de la plataforma es muy sencilla de utilizar.
Heroku actualmente es pago, pero puden usar railway que tien capa gratis
GRACIASSSSS CRACK!
En mi caso, me daba un error porque no se conseguía el archivo main dentro del directorio dist, aun luego de la compilación, lo que hice fue editar en el archivo package.json en la sección de start:prod, coloqué:
node dist/src/main
Gracias por el aporte! me paso exactamente lo mismo ;)
Alternativas fáciles y gratuitas a Heroku
Para deployar en heroku tenemos que crear el archivo Procfile que va a contener el comando de inicio de nuestra aplicacion que va a ejecutar heroku por nosotros:
web: npm run start:prod
Setear el puerto en una variable de entorno cuando levanta la aplicacion. Esto se hace en el main.ts
app.enableCors();// hab ilitar cors para consumir desde cualquier punto. OjO con esto!!!await app.listen(process.env.PORT||3000);
Nos creamos la cuenta en heroku,
realizamos el login via consola ejecutando heroku login, esto abre el browser y nos logueamos
Realizamos pruebas locales antes de subir heroku local web
Heroku ya no es gratis, hay otras alternativas?
Podrías intentar railway. Tiene una capa gratuita.
SI te fijas el comando npm run start:prod que es el que agregas al "Procfile"... este comando apunta a "node dist/main"..... pero resulta que el main esta en "node dist/src/main" por tanto deben agregar el "src", o sencillamente en el "Procfile" solo decirle que ejecute el "npm run start" sin el prod
Teacher @nicobyte pregunta, si queremos correr nodejs en una ambiente local, como lo recomendaría hacer, ya sea en ambiente linux o windows???,
Creo no he visto un curso que hable sobre esto
Puedes optar por Docker, para no tener problemas de despliegue.
Pero si lo que buscas es que tu computadora pueda exponer un puerto y cuando alguien ingrese a esa url(ip de tu computadora) le muestre tu API o renderices un html. Simplemente tienes que cambiar el host en ves de 127.0.0.1 o localhost cambialo por 0.0.0.0
Un ejemplo con Nest:
// Create your regular nest application.const app =awaitNestFactory.create(ApplicationModule);// Then combine it with your microserviceconst microservice = app.connectMicroservice({transport:Transport.TCP,options:{host:'0.0.0.0',port:5000}});await app.startAllMicroservicesAsync();await app.listen(3001);
Disculpen para instalar el cliente de comandos de herolku solo sepuede con el computador WSL , se podria con windows 10 normal. Gracias muchachos
Profesor, compañeros, una pregunta, al momento de utilizar heroku create me dice que debo añadir un pago, no hay una forma de hacerlo gratuito?
Hace cierto tiempo sí había un plan gratuito súper básico, pero ya no :/
Tengo entendido que Heroku ya no es gratis, qué otras alternativas recomiendan?
Es gratis hacer deploy en Heroku?
¡Hola!
Si, mientras tu aplicación sea de poco consumo, para proyectos pequeños o personales viene super bien.
Puedes aprender mas sobre otras plataformas para desplegar tus aplicaciones en el Curso de Introducción al Despiegue de Aplicaciones.
Consulta, Nunca vi que se haya ejecutado el comando "npm run build". Alguien sabe si heroku lo hace por ti, o hay que configurarlo en el Procfile, o hay que hacerlo manualmente antes de hacer el deploy?