{"id":95733,"date":"2022-09-28T02:55:53","date_gmt":"2022-09-28T00:55:53","guid":{"rendered":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/"},"modified":"2024-08-05T15:04:36","modified_gmt":"2024-08-05T13:04:36","slug":"como-implementar-node-js-con-heroku-o-docker-parte-2","status":"publish","type":"post","link":"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/","title":{"rendered":"Comment impl\u00e9menter Node.js avec Heroku ou Docker? Partie 2"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#Declarando-dependencias-de-la-aplicacion\" >Declarando dependencias de la aplicaci\u00f3n<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#Ejecutando-la-aplicacion-localmente\" >Ejecutando la aplicaci\u00f3n localmente<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#Realizar-cambios-locales\" >Realizar cambios locales<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#Complementos-de-provision\" >Complementos de provisi\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#Comenzando-una-consola\" >Comenzando una consola<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#Definir-vars-de-configuracion\" >Definir vars de configuraci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#Realizando-la-base-de-datos\" >Realizando la base de datos<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<div>\n<p>En esta segunda parte vamos a indagar mas acerca de c\u00f3mo podemos implementar Node.js con Heroku, para que as\u00ed puedas realizar tu propia aplicaci\u00f3n y llevar a cabo tus proyectos usando estas poderosas herramientas. Si te perdiste la primera parte, checa esto:\u00a0\u00bfC\u00f3mo implementar Node.js con Heroku o <a href=\"https:\/\/dockerpros.com\/introduction-to-docker\/what-is-docker\/\">Docker<\/a>? Parte 1<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Declarando-dependencias-de-la-aplicacion\"><\/span>Declarando dependencias de la aplicaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Heroku reconoce una aplicaci\u00f3n como Node.js por la existencia de un archivo llamado\u00a0<strong>package.json<\/strong> en el directorio ra\u00edz.<\/p>\n<p>Para tus propias aplicaciones, puede crear una ejecutando el siguiente comando:\u00a0<code>npm init --yes<\/code>.<\/p>\n<p>La aplicaci\u00f3n de demostraci\u00f3n que implement\u00f3 ya tiene un\u00a0<strong>package.json<\/strong>, y se parece a esto:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n{\r\n\"name\": \"node-js-getting-started\",\r\n\"version\": \"0.3.0\",\r\n...\r\n\"engines\": {\r\n\"node\": \"8.11.1\"\r\n},\r\n\"dependencies\": {\r\n\"ejs\": \"^2.5.6\",\r\n\"express\": \"^4.15.2\"\r\n},\r\n...\r\n}\r\n<\/pre>\n<p>El archivo\u00a0<strong>package.json<\/strong> determina tanto la versi\u00f3n de <strong>Node.js<\/strong> que se usar\u00e1 para ejecutar tu aplicaci\u00f3n en Heroku, como las dependencias que deben instalarse con su aplicaci\u00f3n.<\/p>\n<p>Cuando se implementa una aplicaci\u00f3n, Heroku lee este archivo e instala la versi\u00f3n de Node adecuada junto con las dependencias mediante el comando <code>npm install<\/code>.<\/p>\n<p>Ejecuta este comando en tu directorio local para instalar las dependencias, esto va a\u00a0 su sistema para ejecutar la aplicaci\u00f3n localmente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">$ npm install\r\nadded 132 packages in 3.368s\r\n<\/pre>\n<p>Una vez que se instalan las dependencias, estar\u00e1s listo para ejecutar tu aplicaci\u00f3n localmente.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Ejecutando-la-aplicacion-localmente\"><\/span>Ejecutando la aplicaci\u00f3n localmente<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ahora debes iniciar tu aplicaci\u00f3n localmente usando el siguiente comando <code>heroku local<\/code>, el cual se instal\u00f3 como parte de la CLI de Heroku:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">$ heroku local web\r\n[OKAY] Loaded ENV .env File as KEY=VALUE Format\r\n1:23:15 PM web.1 | Node app is running on port 5000\r\n<\/pre>\n<p>Al igual que Heroku, <code>heroku local<\/code> examina el Procfile para determinar qu\u00e9 ejecutar.<\/p>\n<p>Luego abre la direcci\u00f3n<em> http:\/\/localhost:5000<\/em>\u00a0en tu navegador web de preferencia. Deber\u00edas ver tu aplicaci\u00f3n ejecut\u00e1ndose de forma local.<\/p>\n<p>Si quieres evitar que la aplicaci\u00f3n se ejecute localmente, en la CLI, presione <code>Ctrl+C<\/code> para salir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Realizar-cambios-locales\"><\/span>Realizar cambios locales<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En este paso, aprender\u00e1s f\u00e1cilmente c\u00f3mo propagar un cambio local a tu aplicaci\u00f3n a trav\u00e9s de Heroku. Como ejemplo, modificar\u00e1s la aplicaci\u00f3n para agregar una dependencia adicional y el c\u00f3digo para usarla.<\/p>\n<p>Comienza a\u00f1adiendo una dependencia para <code>cool-ascii-faces<\/code> en el <code>paquete.json<\/code>. Para ello, ejecuta el siguiente comando:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">$ npm install cool-ascii-faces\r\n+ cool-ascii-faces@1.3.4\r\nadded 9 packages in 2.027s\r\n<\/pre>\n<p>Debes modificar <strong>index.js<\/strong> para que requiera este m\u00f3dulo al inicio. Tambi\u00e9n agrega una nueva ruta (\/cool) que la utilice. Tu c\u00f3digo final deber\u00eda verse as\u00ed:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">const cool = require('cool-ascii-faces')\r\nconst express = require('express')\r\nconst path = require('path')\r\nconst PORT = process.env.PORT || 5000\r\n\r\nexpress()\r\n.use(express.static(path.join(__dirname, 'public')))\r\n.set('views', path.join(__dirname, 'views'))\r\n.set('view engine', 'ejs')\r\n.get('\/', (req, res) =&gt; res.render('pages\/index'))\r\n.get('\/cool', (req, res) =&gt; res.send(cool()))\r\n.listen(PORT, () =&gt; console.log(`Listening on ${ PORT }`))\r\n<\/pre>\n<p>Ahora prueba localmente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">$ npm install\r\n$ heroku local\r\n<\/pre>\n<p>Visitando tu aplicaci\u00f3n en <em>http:\/\/localhost:5000\/cool<\/em>, deber\u00edas ver caras bonitas en cada actualizaci\u00f3n: ( \u2686 _ \u2686 ). \ud83e\udd17<\/p>\n<p>Ahora desplieguen. Casi todos los despliegues en Heroku siguen el mismo patr\u00f3n. Primero, agregue los archivos modificados al repositorio git local:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n$ git add .\r\n\r\n<\/pre>\n<p>Ahora confirma los cambios en el repositorio:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n$\u00a0git commit -m \"Add cool face API\"\r\n\r\n<\/pre>\n<p>Ahora desplieguen, tal como lo se hizo antes:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n$\u00a0git push heroku master\r\n\r\n<\/pre>\n<p>Por \u00faltimo, comprueba que todo funciona:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n$\u00a0 heroku open cool\r\n\r\n<\/pre>\n<p>Finalmente deber\u00edas ver otra cara.\u00a0\ud83d\ude09<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Complementos-de-provision\"><\/span>Complementos de provisi\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Los complementos, son servicios cloud de terceros que proporcionan servicios adicionales listos para usar para su aplicaci\u00f3n, desde la persistencia, pasando por el registro, la monitorizaci\u00f3n y mucho m\u00e1s.<\/p>\n<p>Por defecto, Heroku almacena 1500 l\u00edneas de registros de tu aplicaci\u00f3n. Sin embargo, hace que el flujo de registro completo est\u00e9 disponible como un servicio, y varios proveedores adicionales han escrito servicios de registro que proporcionan cosas como la persistencia de registros, b\u00fasqueda y alertas por correo electr\u00f3nico y SMS.<\/p>\n<p>En este paso t\u00fa proveer\u00e1s uno de estos complementos de registro, llamado Papertrail.<\/p>\n<p>Este es el c\u00f3digo para la provisi\u00f3n del complemento para el registro del Papertrail:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n$ heroku addons:create papertrail\r\nAdding papertrail on sharp-rain-871... done, v4 (free)\r\nWelcome to Papertrail. Questions and ideas are welcome (support@papertrailapp.com). Happy logging!\r\nUse `heroku addons:docs papertrail` to view documentation.\r\n<\/pre>\n<p>Para ayudar a prevenir el abuso, el aprovisionamiento de un complemento requiere la verificaci\u00f3n de la cuenta. Si tu cuenta no ha sido verificada, se le indicar\u00e1 que visite el sitio de verificaci\u00f3n.<\/p>\n<p>Ahora el complemento ya est\u00e1 implementado y configurado para tu aplicaci\u00f3n. Puedes hacer una lista de complementos para tu aplicaci\u00f3n de esta manera:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n$ heroku addons\r\n\r\n<\/pre>\n<p>Para ver este complemento en acci\u00f3n, visita la URL de Heroku de tu aplicaci\u00f3n unas cuantas veces. Cada visita generar\u00e1 m\u00e1s mensajes de registro, que ahora deber\u00edan ser enviados al complemento del Papertrail. Visita la consola del Papertrail para ver los mensajes de registro, este es el c\u00f3digo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n$ heroku addons:open papertrail\r\n<\/pre>\n<p>Su navegador abrir\u00e1 una consola web Papertrail, mostrando los \u00faltimos eventos de registro. La interfaz le permite buscar y configurar alertas:<\/p>\n<figure id=\"attachment_99\" class=\"wp-caption aligncenter\" style=\"width: 767px;\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-99 size-full\" src=\"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/2105-imported-1443570562-2105-imported-1443555038-pap-1.png\" alt=\"Alertas\" width=\"767\" height=\"205\" \/><figcaption class=\"wp-caption-text\">Alertas<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"Comenzando-una-consola\"><\/span>Comenzando una consola<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Para tener una idea real del funcionamiento de los bancos de potencia, puedes crear otro banco de potencia \u00fanico y ejecutar el comando <code>bash<\/code>, que abre una shell en ese banco de potencia.<\/p>\n<p>A continuaci\u00f3n, puedes ejecutar comandos all\u00ed. Cada banco de potencia tiene su propio espacio de archivos ef\u00edmero, poblado con su aplicaci\u00f3n y sus dependencias \u2013 una vez que el comando se completa (en este caso, bash), el banco de potencia se elimina.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n$ heroku run bash\r\nRunning 'bash' attached to terminal... up, run.3052\r\n~ $ ls\r\nProcfile README.md composer.json composer.lock vendor views web\r\n~ $ exit\r\nexit\r\n<\/pre>\n<p>Si recibe un error, <code>Error connecting to process<\/code>, es posible que tengas que configurar tu cortafuegos.<\/p>\n<p>No olvides escribir <code>exit<\/code> para salir del shell y terminar el banco de potencia.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Definir-vars-de-configuracion\"><\/span>Definir vars de configuraci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Heroku le permite externalizar la configuraci\u00f3n, almacenando datos como claves de encriptaci\u00f3n o direcciones de recursos externos en config vars.<\/p>\n<p>En tiempo de ejecuci\u00f3n, los vars de configuraci\u00f3n se exponen como variables de entorno a la aplicaci\u00f3n. Por ejemplo, modificar <strong>index.js<\/strong> para que introduzca una nueva ruta,<code> \/times<\/code>, que repita una acci\u00f3n en funci\u00f3n del valor de la variable de entorno <code>TIMES<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">app.get('\/times', (req, res) =&gt; {\r\nlet result = ''\r\nconst times = process.env.TIMES || 5\r\nfor (i = 0; i &lt; times; i++) {\r\nresult += i + ' '\r\n}\r\nres.send(result)\r\n})\r\n<\/pre>\n<p><code>heroku local<\/code> configurar\u00e1 autom\u00e1ticamente el entorno basado en el contenido del archivo <code>.env<\/code> en tu directorio local. En el directorio superior de tu proyecto ya existe un archivo <code>.env<\/code> que contiene los siguientes contenidos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\nTIMES=2\r\n\r\n<\/pre>\n<p>Si ejecutas la aplicaci\u00f3n con <code>heroku local<\/code>, ver\u00e1s que se generan dos n\u00fameros cada vez.<\/p>\n<p>Para configurar el config var en Heroku, ejecuta lo siguiente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\nheroku config:set TIMES=2\r\n<\/pre>\n<p>Luego podr\u00e1s ver los config vars que se configuran usando heroku config:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">$ heroku config\r\n== sharp-rain-871 Config Vars\r\nPAPERTRAIL_API_TOKEN: erdKhPeeeehIcdfY7ne\r\nTIMES: 2\r\n<\/pre>\n<p>Despliega tu aplicaci\u00f3n modificada en Heroku y luego vis\u00edtala ejecutando <code>heroku open times<\/code>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Realizando-la-base-de-datos\"><\/span>Realizando la base de datos<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>El mercado de complementos tiene una gran cantidad de almacenes de datos, desde los proveedores de Redis y MongoDB hasta Postgres y MySQL. En este paso, agregar\u00e1 una base de datos de desarrollo gratuita de Heroku Postgres Starter Tier a su aplicaci\u00f3n.<\/p>\n<p>Agrega la base de datos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\r\n$ heroku addons:create heroku-postgresql:hobby-dev\r\nAdding heroku-postgresql:hobby-dev... done, v3 (free)\r\n<\/pre>\n<p>Esto crea una base de datos y establece una variable DATABASE_URL de entorno (puede verificar esto ejecutando el comando <strong>heroku config<\/strong>).<\/p>\n<p>\u00dasa el comando\u00a0<strong>npm<\/strong> para instalar el m\u00f3dulo <strong>pg<\/strong> a tus dependencias:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">$ npm install pg\r\n+ pg@7.4.3\r\nadded 14 packages in 2.108s\r\n<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">\"dependencies\": {\r\n\"cool-ascii-faces\": \"^1.3.4\",\r\n\"ejs\": \"^2.5.6\",\r\n\"express\": \"^4.15.2\",\r\n\"pg\": \"^7.4.3\"\r\n},\r\n<\/pre>\n<p>Ahora edita su archivo <strong>index.js<\/strong> para usar este m\u00f3dulo para conectarse a la base de datos especificada en tu variable de entorno <strong>DATABASE_URL<\/strong>. Agrega esto cerca de la parte superior:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">const { Pool } = require('pg');\r\nconst pool = new Pool({\r\nconnectionString: process.env.DATABASE_URL,\r\nssl: true\r\n});\r\n<\/pre>\n<p>Ahora agrega otra ruta,agregando lo siguiente: <strong>\/db<\/strong> justo despu\u00e9s de la existente <strong>.get(\u2018\/\u2019, \u2026)\u00a0<\/strong>como se muestra en el ejemplo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">.get('\/db', async (req, res) =&gt; {\r\ntry {\r\nconst client = await pool.connect()\r\nconst result = await client.query('SELECT * FROM test_table');\r\nconst results = { 'results': (result) ? result.rows : null};\r\nres.render('pages\/db', results );\r\nclient.release();\r\n} catch (err) {\r\nconsole.error(err);\r\nres.send(\"Error \" + err);\r\n}\r\n})\r\n<\/pre>\n<p>Esto garantiza que cuando acceda a tu aplicaci\u00f3n utilizando la ruta <strong>\/db<\/strong>, devolver\u00e1 todas las filas de la tabla <strong>test_table<\/strong>.<\/p>\n<p>Despliega esto a Heroku. Si accedes a <strong>\/db<\/strong>, recibir\u00e1s un <em>error<\/em> ya que no hay ninguna tabla en la base de datos. Suponiendo que tienes Postgres instalado localmente, usa el comando <code>heroku pg:psql<\/code> para conectarse a la base de datos remota, crea una tabla e inserte una fila:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">$ heroku pg:psql\r\npsql (9.5.2, server 9.6.2)\r\nSSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)\r\nType \"help\" for help.\r\n=&gt; create table test_table (id integer, name text);\r\nCREATE TABLE\r\n=&gt; insert into test_table values (1, 'hello database');\r\nINSERT 0 1\r\n=&gt; q\r\n<\/pre>\n<p>\u00a1Felicidades por haber completado esta lecci\u00f3n!\u00a0\ud83c\udfc5\ud83c\udfc6\ud83e\udd47<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>En esta segunda parte vamos a indagar mas acerca de c\u00f3mo podemos implementar Node.js con Heroku, para que as\u00ed puedas realizar tu propia aplicaci\u00f3n y llevar a cabo tus proyectos&#8230;<\/p>","protected":false},"author":1,"featured_media":95734,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1374],"tags":[],"class_list":["post-95733","post","type-post","status-publish","format-standard","has-post-thumbnail","category-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v28.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>\u00bfC\u00f3mo implementar Node.js con Heroku o Docker? Parte 2 - R Marketing Digital<\/title>\n<meta name=\"description\" content=\"En esta segunda parte vamos a indagar mas acerca de c\u00f3mo podemos implementar Node.js con Heroku, para que as\u00ed puedas realizar tu propia aplicaci\u00f3n y\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00bfC\u00f3mo implementar Node.js con Heroku o Docker? Parte 2\" \/>\n<meta property=\"og:description\" content=\"En esta segunda parte vamos a indagar mas acerca de c\u00f3mo podemos implementar Node.js con Heroku, para que as\u00ed puedas realizar tu propia aplicaci\u00f3n y\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/\" \/>\n<meta property=\"og:site_name\" content=\"R Marketing Digital\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-28T00:55:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-05T13:04:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1326\" \/>\n\t<meta property=\"og:image:height\" content=\"611\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"R Marketing Digital\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/\"},\"author\":{\"name\":\"R Marketing Digital\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\"},\"headline\":\"\u00bfC\u00f3mo implementar Node.js con Heroku o Docker? Parte 2\",\"datePublished\":\"2022-09-28T00:55:53+00:00\",\"dateModified\":\"2024-08-05T13:04:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/\"},\"wordCount\":1182,\"image\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png\",\"articleSection\":[\"Javascript\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/\",\"name\":\"\u00bfC\u00f3mo implementar Node.js con Heroku o Docker? Parte 2 - R Marketing Digital\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png\",\"datePublished\":\"2022-09-28T00:55:53+00:00\",\"dateModified\":\"2024-08-05T13:04:36+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\"},\"description\":\"En esta segunda parte vamos a indagar mas acerca de c\u00f3mo podemos implementar Node.js con Heroku, para que as\u00ed puedas realizar tu propia aplicaci\u00f3n y\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/como-implementar-node-js-con-heroku-o-docker-parte-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png\",\"contentUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png\",\"width\":1326,\"height\":611,\"caption\":\"1_jaj910fg52odirzjhxasbq-2299496-5237383-png\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#website\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/\",\"name\":\"R Marketing Digital\",\"description\":\"Agencia SEO | Publicidad redes sociales | Community Management\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rmarketingdigital.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\",\"name\":\"R Marketing Digital\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"caption\":\"R Marketing Digital\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comment impl\u00e9menter Node.js avec Heroku ou Docker ? Partie 2 - Marketing num\u00e9rique R","description":"Dans cette deuxi\u00e8me partie, nous allons \u00e9tudier plus en d\u00e9tail comment nous pouvons impl\u00e9menter Node.js avec Heroku, afin que vous puissiez cr\u00e9er votre propre application et","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/","og_locale":"fr_FR","og_type":"article","og_title":"\u00bfC\u00f3mo implementar Node.js con Heroku o Docker? Parte 2","og_description":"En esta segunda parte vamos a indagar mas acerca de c\u00f3mo podemos implementar Node.js con Heroku, para que as\u00ed puedas realizar tu propia aplicaci\u00f3n y","og_url":"https:\/\/rmarketingdigital.com\/fr\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/","og_site_name":"R Marketing Digital","article_published_time":"2022-09-28T00:55:53+00:00","article_modified_time":"2024-08-05T13:04:36+00:00","og_image":[{"width":1326,"height":611,"url":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png","type":"image\/png"}],"author":"R Marketing Digital","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#article","isPartOf":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/"},"author":{"name":"R Marketing Digital","@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e"},"headline":"\u00bfC\u00f3mo implementar Node.js con Heroku o Docker? Parte 2","datePublished":"2022-09-28T00:55:53+00:00","dateModified":"2024-08-05T13:04:36+00:00","mainEntityOfPage":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/"},"wordCount":1182,"image":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#primaryimage"},"thumbnailUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png","articleSection":["Javascript"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/","url":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/","name":"Comment impl\u00e9menter Node.js avec Heroku ou Docker ? Partie 2 - Marketing num\u00e9rique R","isPartOf":{"@id":"https:\/\/rmarketingdigital.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#primaryimage"},"image":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#primaryimage"},"thumbnailUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png","datePublished":"2022-09-28T00:55:53+00:00","dateModified":"2024-08-05T13:04:36+00:00","author":{"@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e"},"description":"Dans cette deuxi\u00e8me partie, nous allons \u00e9tudier plus en d\u00e9tail comment nous pouvons impl\u00e9menter Node.js avec Heroku, afin que vous puissiez cr\u00e9er votre propre application et","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/rmarketingdigital.com\/javascript\/como-implementar-node-js-con-heroku-o-docker-parte-2\/#primaryimage","url":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png","contentUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/1_JAJ910fg52ODIRZjHXASBQ-2299496.png","width":1326,"height":611,"caption":"1_jaj910fg52odirzjhxasbq-2299496-5237383-png"},{"@type":"WebSite","@id":"https:\/\/rmarketingdigital.com\/#website","url":"https:\/\/rmarketingdigital.com\/","name":"Marketing num\u00e9rique","description":"Agence de r\u00e9f\u00e9rencement | Publicit\u00e9 sur les r\u00e9seaux sociaux | Gestion de communaut\u00e9","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rmarketingdigital.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e","name":"Marketing num\u00e9rique","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","caption":"R Marketing Digital"}}]}},"_links":{"self":[{"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/posts\/95733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/comments?post=95733"}],"version-history":[{"count":0,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/posts\/95733\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/media\/95734"}],"wp:attachment":[{"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/media?parent=95733"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/categories?post=95733"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/tags?post=95733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}