{"id":19117,"date":"2017-11-10T12:15:33","date_gmt":"2017-11-10T10:15:33","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=19117"},"modified":"2017-11-08T10:47:56","modified_gmt":"2017-11-08T08:47:56","slug":"dockerizing-node-js-applications","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/","title":{"rendered":"Dockerizing Node.js Applications"},"content":{"rendered":"<p>Containers are one of the best ways to deploy Node.js applications these days. In this post, you will learn how you can containerize your Node.js applications using Docker.<\/p>\n<p>First, we will create a simple web application in Node.js, then we\u2019ll build the Docker image and run it. You\u2019ll also learn a few tips and tricks to make development easier and faster.<\/p>\n<h2>Prerequisites<\/h2>\n<p>Before starting this tutorial, make sure you have the following installed on your computer:<\/p>\n<ul>\n<li>Node.js 8.5 or greater (you can download from <a href=\"https:\/\/nodejs.org\/en\/download\/\">nodejs.org<\/a> or use <a href=\"https:\/\/github.com\/creationix\/nvm\">NVM<\/a>)<\/li>\n<li><a href=\"https:\/\/www.docker.com\/docker-mac\">Docker for Mac<\/a> or <a href=\"https:\/\/www.docker.com\/docker-windows\">Docker for Windows<\/a><\/li>\n<\/ul>\n<h2>Creating the Node.js Application<\/h2>\n<p>For the sake of simplicity, we\u2019re going to build a small application, which serves JSON over HTTP. For this, let\u2019s go with <a href=\"https:\/\/expressjs.com\/\">Express<\/a>.<\/p>\n<p>First, let\u2019s create the <code>package.json<\/code> with <code>npm init --yes<\/code>. Since we\u2019re using Express, let\u2019s add it as a dependency using <code>npm install express<\/code>. Starting with NPM version 5 or higher, this is equivalent to <code>npm install express --save<\/code>.<\/p>\n<p>Once we\u2019ve created the <code>package.json<\/code> and our dependency, it\u2019s time to create the Node.js application:<\/p>\n<pre class=\"brush:php\">\/\/ index.js\r\nconst express = require('express')\r\nconst app = express()\r\n\r\n\/\/ yes, you can use async functions with express this easily!\r\n\r\napp.get('\/', async function (req, res) {\r\n  res.json({\r\n    status: 'ok'\r\n  })\r\n})\r\n\r\napp.listen(3000)<\/pre>\n<p>You can test the application by running it with <code>node index.js<\/code> and hit <code>localhost:3000<\/code> with <code>curl<\/code> or your browser.<\/p>\n<h2>Creating the Dockerfile<\/h2>\n<p>Docker uses its syntax to describe images that will be built. These instructions are located in the Dockerfile.<\/p>\n<p>The first line of the Dockerfile defines what is the base image that your image will build upon. For us, it\u2019s important that it includes the Node.js binary. You can get a list of the official images from <a href=\"https:\/\/hub.docker.com\/_\/node\/\">https:\/\/hub.docker.com\/_\/node\/<\/a>.<\/p>\n<p>For this tutorial, we\u2019re going to pick a base image built on top of <a href=\"https:\/\/www.alpinelinux.org\/about\/\">Alpine<\/a>, which is a security-oriented, lightweight Linux distribution based on musl libc and BusyBox. To do so, we have to add the following line: <code>FROM node:8.6.0-alpine<\/code>.<\/p>\n<p>Next, we have to set the working directory for the Docker image: <code>WORKDIR \/usr\/src\/app<\/code>.<\/p>\n<p>Once we have it, it\u2019s time to install our application\u2019s dependencies. To do so, you have to copy to the image the <code>package.json<\/code> file as well as the <code>package-lock.json<\/code> if you are using that.<\/p>\n<pre class=\"brush:php\"># Install app dependencies\r\nCOPY package.json .\r\n# uncomment if using npm 5 or newer\r\n# COPY package-lock.json .\r\nRUN npm install<\/pre>\n<p>Now as we have the application\u2019s dependencies installed, we can move over the source of the application itself: <code>COPY . .<\/code>.<\/p>\n<p>The next thing we have to do is to expose our application to the outside world. We can do that with the following instruction: <code>EXPOSE 3000<\/code>.<\/p>\n<p>The last step is to start the application itself: <code>CMD node index.js<\/code>.<\/p>\n<p>Your Dockerfile should now look like this:<\/p>\n<pre class=\"brush:php\">FROM node:8.6.0-alpine\r\n\r\nWORKDIR \/usr\/src\/app\r\n\r\nCOPY package.json .\r\nCOPY package-lock.json .\r\nRUN npm install\r\n\r\nCOPY . .\r\n\r\nEXPOSE 3000\r\n\r\nCMD node index.js<\/pre>\n<h2>Using the .dockerignore File<\/h2>\n<p>When you are developing applications, remember that log files, generated files, or dependencies get added to the working directory. These files and directories are usually ignored in version control systems. You can and should do the same with Docker as well, skipping <code>node_modules<\/code> and log files.<\/p>\n<p>You just have to create a <code>.dockerignore<\/code> file and add the files you want to exclude, like:<\/p>\n<pre class=\"brush:php\">node_modules\r\nnpm-debug.log<\/pre>\n<h2>Building Your Image<\/h2>\n<p>The next thing you want to do is to finally build the image using the <code>Dockerfile<\/code> and the <code>.dockerignore<\/code> file you have just created.<\/p>\n<pre class=\"brush:php\">docker build -t &lt;your username&gt;\/&lt;app name&gt; .<\/pre>\n<p>Once you\u2019ve built your images, you can list all the available images on your system using <code>docker images<\/code>.<\/p>\n<h2>Run the Built Image<\/h2>\n<p>Showtime! To run the image, you have to redirect the port you exposed to your host machine, as well as run the image in detached mode. To do so, run the following command:<\/p>\n<pre class=\"brush:php\">docker run -p 3000:3000 -d &lt;your username&gt;\/&lt;app name&gt;<\/pre>\n<p>Once you execute this command, the application will be accessible from the host system. Try hitting <code>localhost:3000<\/code> with <code>curl<\/code> or your browser.<\/p>\n<p>To get a list of all running Docker images, you can run <code>docker ps<\/code>. This will list the running images, as well as their container ID. This ID is needed if you have to kill the running images, or if you\u2019d like to go inside the container.<\/p>\n<p>To go inside the running image, you can run <code>docker exec -it &lt;container id&gt; \/bin\/sh<\/code>.<\/p>\n<h2>Tips and Tricks<\/h2>\n<p>There are a few tips and tricks that can help you a lot when working with Docker images. I\u2019d like to share the two that I found the most useful in the past years.<\/p>\n<h3>Caching node_modules<\/h3>\n<p>When we created the Dockerfile, you could have asked yourself: why not copy everything over and run the <code>npm install<\/code> after? What\u2019s the reason for doing it in two separate steps?<\/p>\n<p>The reason is that Docker caches layers, and layers only get rebuilt if the files on which they were built are changed. So if you\u2019re using a wildcard like <code>ADD . \/opt\/app<\/code>, <code>npm install<\/code> will be run even for a small change in your application\u2019s code.<\/p>\n<p>To save this time and cache <code>node_modules<\/code>, we move our application\u2019s source in different steps. You can <a href=\"http:\/\/bitjudo.com\/blog\/2014\/03\/13\/building-efficient-dockerfiles-node-dot-js\/\">learn more about it here<\/a>.<\/p>\n<h3>Tag Docker images when building<\/h3>\n<p>When you\u2019re shipping your application to production, it\u2019s a good practice to tag images with <a href=\"http:\/\/semver.org\/\">semver<\/a>. To do so, you can modify the Docker build command in the following way:<\/p>\n<pre class=\"brush:php\">docker  build -t docker build -t &lt;your username&gt;\/&lt;app name&gt;:&lt;app version&gt; .<\/pre>\n<p>Preferably, you\u2019ll run this command in your CI\/CD pipeline and not on your local machine. You should also combine it with a bumping version in your <code>package.json<\/code> to keep that in sync as well.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Web Code Geeks with permission by Gergely Nemeth, partner at our <a href=\"http:\/\/www.webcodegeeks.com\/join-us\/wcg\/\" target=\"_blank\" rel=\"noopener\">WCG program<\/a>. See the original article here: <a href=\"https:\/\/blog.codeship.com\/dockerizing-node-js-applications\/\" target=\"_blank\" rel=\"noopener\">Dockerizing Node.js Applications<\/a><\/p>\n<p>Opinions expressed by Web Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Containers are one of the best ways to deploy Node.js applications these days. In this post, you will learn how you can containerize your Node.js applications using Docker. First, we will create a simple web application in Node.js, then we\u2019ll build the Docker image and run it. You\u2019ll also learn a few tips and tricks &hellip;<\/p>\n","protected":false},"author":1637,"featured_media":10356,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[217],"class_list":["post-19117","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-node-js","tag-docker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dockerizing Node.js Applications - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Containers are one of the best ways to deploy Node.js applications these days. In this post, you will learn how you can containerize your Node.js\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dockerizing Node.js Applications - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Containers are one of the best ways to deploy Node.js applications these days. In this post, you will learn how you can containerize your Node.js\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2017-11-10T10:15:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gergely Nemeth\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nthgergo\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gergely Nemeth\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/\"},\"author\":{\"name\":\"Gergely Nemeth\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/faeed41437869a9cd81a7a63a4552f0c\"},\"headline\":\"Dockerizing Node.js Applications\",\"datePublished\":\"2017-11-10T10:15:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/\"},\"wordCount\":867,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"keywords\":[\"Docker\"],\"articleSection\":[\"Node.js\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/\",\"name\":\"Dockerizing Node.js Applications - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"datePublished\":\"2017-11-10T10:15:33+00:00\",\"description\":\"Containers are one of the best ways to deploy Node.js applications these days. In this post, you will learn how you can containerize your Node.js\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Node.js\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/javascript\/node-js\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Dockerizing Node.js Applications\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/faeed41437869a9cd81a7a63a4552f0c\",\"name\":\"Gergely Nemeth\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/daa5b399e3f519e8fc3977200a84e16be130910bcbd6d433a9e16635104f7953?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/daa5b399e3f519e8fc3977200a84e16be130910bcbd6d433a9e16635104f7953?s=96&d=mm&r=g\",\"caption\":\"Gergely Nemeth\"},\"description\":\"Gergely Nemeth built RisingStack, and is a software engineer, architect, and conference speaker.\",\"sameAs\":[\"https:\/\/blog.codeship.com\",\"https:\/\/x.com\/nthgergo\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/gergely-nemeth\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dockerizing Node.js Applications - Web Code Geeks - 2026","description":"Containers are one of the best ways to deploy Node.js applications these days. In this post, you will learn how you can containerize your Node.js","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:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/","og_locale":"en_US","og_type":"article","og_title":"Dockerizing Node.js Applications - Web Code Geeks - 2026","og_description":"Containers are one of the best ways to deploy Node.js applications these days. In this post, you will learn how you can containerize your Node.js","og_url":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2017-11-10T10:15:33+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","type":"image\/jpeg"}],"author":"Gergely Nemeth","twitter_card":"summary_large_image","twitter_creator":"@nthgergo","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Gergely Nemeth","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/"},"author":{"name":"Gergely Nemeth","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/faeed41437869a9cd81a7a63a4552f0c"},"headline":"Dockerizing Node.js Applications","datePublished":"2017-11-10T10:15:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/"},"wordCount":867,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","keywords":["Docker"],"articleSection":["Node.js"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/","url":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/","name":"Dockerizing Node.js Applications - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","datePublished":"2017-11-10T10:15:33+00:00","description":"Containers are one of the best ways to deploy Node.js applications these days. In this post, you will learn how you can containerize your Node.js","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/javascript\/node-js\/dockerizing-node-js-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"JavaScript","item":"https:\/\/www.webcodegeeks.com\/category\/javascript\/"},{"@type":"ListItem","position":3,"name":"Node.js","item":"https:\/\/www.webcodegeeks.com\/category\/javascript\/node-js\/"},{"@type":"ListItem","position":4,"name":"Dockerizing Node.js Applications"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/faeed41437869a9cd81a7a63a4552f0c","name":"Gergely Nemeth","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/daa5b399e3f519e8fc3977200a84e16be130910bcbd6d433a9e16635104f7953?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/daa5b399e3f519e8fc3977200a84e16be130910bcbd6d433a9e16635104f7953?s=96&d=mm&r=g","caption":"Gergely Nemeth"},"description":"Gergely Nemeth built RisingStack, and is a software engineer, architect, and conference speaker.","sameAs":["https:\/\/blog.codeship.com","https:\/\/x.com\/nthgergo"],"url":"https:\/\/www.webcodegeeks.com\/author\/gergely-nemeth\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/19117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/1637"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=19117"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/19117\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/10356"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=19117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=19117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=19117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}