{"id":19059,"date":"2017-11-03T12:15:18","date_gmt":"2017-11-03T10:15:18","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=19059"},"modified":"2017-11-02T10:34:38","modified_gmt":"2017-11-02T08:34:38","slug":"fullstack-development-environment-docker","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/","title":{"rendered":"Fullstack development environment with Docker"},"content":{"rendered":"<p>I have been using\u00a0Docker for building (compile\/packaging)\u00a0and running web applications for some time. Through this blog, I would like to share how I used docker for building and running a complete (Angular\/SpringBoot)\u00a0webapp in a local and production environments.<\/p>\n<h2>Docker for development environment<\/h2>\n<p>In large enterprise projects with distributed development teams, it becomes very difficult to manage and maintain a consistent development environment across developers. The option of VirtualBox\/Vagrant\/Chef\/Puppet is too complex, bulky and resource intensive to be viable for this use-case.<\/p>\n<p>Docker with its simplicity and light-weight containers is an excellent choice for developer environment. As Docker is lightweight, one can run multiple containers simultaneously for fine-grained components and tasks. Not to mention the benefit of having a\u00a0production-like development environment.<\/p>\n<h2>Docker for building artifacts<\/h2>\n<p>In typical production usage, Docker is plugged into the CI\/CD pipeline, where the artifacts are already generated and docker machines are spun to run them. In a development environment, Docker can itself act as a build machine with the right build configuration to generate the artifacts. Those artifacts can then be deployed to other docker containers to run them.<\/p>\n<p>The process of building and running the application in a Docker container is a big time saver for daily local builds,<br \/>\n<b>Frontend developers can use a Docker container to build and run backend services with the right version of code without having to install backend build and runtime tools locally on their machines.<\/b><\/p>\n<p>Below you will find a sample Docker configuration for a complete stack (frontend\/backend build and runtime) using existing published docker images. It took me some time to setup Angular CLI build container.<\/p>\n<h2>Project Structure<\/h2>\n<p>The sample project is Angular frontend running on Ngnix with SpringBoot(Tomcat) as backend services. Angular is built with Yarn\/NPM\/Angular CLI and backend with Gradle\/Java8<\/p>\n<p>As shown in the figure below, both backend and frontend have two docker files, one to build the\u00a0component\u00a0(Dockerfile_Build) and the second one to run it (Dockerfile). Docker-compose is used to tie the application together with the proper\u00a0order of components and dependencies.<\/p>\n<p><b>The local docker-compose will include the build steps to build the artifact and run them, whereas the production docker-compose will get QA certified artifacts from CI\/CD process and would just run them in the containers.<\/b><\/p>\n<pre class=\"brush:bash\">sampleProject\r\n      backend\r\n            Dockerfile_build\r\n            Dockerfile\r\n            src\r\n            build\r\n                 libs\r\n      frontend\r\n            Dockerfile_build\r\n            Dockerfile\r\n            src\r\n            nginx-config\r\n            dist\r\n        ops\r\n            local\r\n                 docker-compose.yml\r\n            production\r\n                 docker-compose.yml<\/pre>\n<p>The Frontend Angular code (frontend\/src) is built in frontend\/dist folder using AngularCLI (ng build) by build container(..\/frontend\/Dockerfile_build). The dist folder and Ngnix\u00a0configurations are used by Ngnix\u00a0container to run the Angular app.<\/p>\n<p>Backend code (backend\/src) is built using the Gradle container(..\/backend\/Dockerfile_build) with output jar in backend\/build\/libs folder. The jar is then used by the Java container(..\/backend\/Dockerfile) to run the SpringBoot app.<\/p>\n<h3>Backend\u00a0Gradle Build\u00a0Container<\/h3>\n<p>Java code is compiled and packaged using Gradle\/Java8. I took the image file from Offical Docker image library: https:\/\/hub.docker.com\/_\/gradle\/<\/p>\n<pre class=\"brush:sql\">FROM openjdk:8-jdk\r\n\r\nCMD [\"gradle\"]\r\n\r\nENV GRADLE_HOME \/opt\/gradle\r\nENV GRADLE_VERSION 4.2.1\r\n\r\nARG GRADLE_DOWNLOAD_SHA256=b551cc04f2ca51c78dd14edb060621f0e5439bdfafa6fd167032a09ac708fbc0\r\nRUN set -o errexit -o nounset \\\r\n &amp;&amp; echo \"Downloading Gradle\" \\\r\n &amp;&amp; wget --no-verbose --output-document=gradle.zip \"https:\/\/services.gradle.org\/distributions\/gradle-${GRADLE_VERSION}-bin.zip\" \\\r\n \\\r\n &amp;&amp; echo \"Checking download hash\" \\\r\n &amp;&amp; echo \"${GRADLE_DOWNLOAD_SHA256} *gradle.zip\" | sha256sum --check - \\\r\n \\\r\n &amp;&amp; echo \"Installing Gradle\" \\\r\n &amp;&amp; unzip gradle.zip \\\r\n &amp;&amp; rm gradle.zip \\\r\n &amp;&amp; mv \"gradle-${GRADLE_VERSION}\" \"${GRADLE_HOME}\/\" \\\r\n &amp;&amp; ln --symbolic \"${GRADLE_HOME}\/bin\/gradle\" \/usr\/bin\/gradle \\\r\n \\\r\n &amp;&amp; echo \"Adding gradle user and group\" \\\r\n &amp;&amp; groupadd --system --gid 1000 gradle \\\r\n &amp;&amp; useradd --system --gid gradle --uid 1000 --shell \/bin\/bash --create-home gradle \\\r\n &amp;&amp; mkdir \/home\/gradle\/.gradle \\\r\n &amp;&amp; chown --recursive gradle:gradle \/home\/gradle \\\r\n \\\r\n &amp;&amp; echo \"Symlinking root Gradle cache to gradle Gradle cache\" \\\r\n &amp;&amp; ln -s \/home\/gradle\/.gradle \/root\/.gradle\r\n\r\n# Create Gradle volume\r\nUSER gradle\r\nVOLUME \"\/home\/gradle\/.gradle\"\r\nWORKDIR \/home\/gradle\r\n\r\nRUN set -o errexit -o nounset \\\r\n &amp;&amp; echo \"Testing Gradle installation\" \\\r\n &amp;&amp; gradle --version<\/pre>\n<p>Build this image from backend folder using Dockerfile_build, run using<\/p>\n<p>docker run &#8211;rm -v &#8220;$PWD&#8221;:\/home\/gradle\/project -w \/home\/gradle\/project im-build-backend gradle build<\/p>\n<p>It generates the SpringBoot app as an executable\u00a0jar in the building\/libs folder.<\/p>\n<h3>Backend\u00a0SpringBoot Container<\/h3>\n<p>This is a regular JDK container with\u00a0SpringBoot app jar.<\/p>\n<pre class=\"brush:sql\">FROM frolvlad\/alpine-oraclejdk8:slim\r\n\r\nVOLUME \/tmp\r\n\r\nCOPY build\/libs\/mySample.jar app.jar\r\nRUN sh -c 'touch app.jar'\r\n\r\nENV JAVA_OPTS=\"\"\r\n\r\nENTRYPOINT [ \"sh\", \"-c\", \"java $JAVA_OPTS -jar \/app.jar\" ]<\/pre>\n<p><code>docker\u00a0run\u00a0-d -p 8080:8080\u00a0im-backend<\/code><\/p>\n<h3>Frontend\u00a0Yarn\/AngularCLI Build Container<\/h3>\n<p>This container has Yarn, Node, Angular CLI and NPM to build Angular app.<\/p>\n<pre class=\"brush:sql\">FROM alexsuch\/angular-cli:1.4.8<\/pre>\n<p>Build\/run this container from frontend project folder which has package.json and src folders.<\/p>\n<pre class=\"brush:sql\">docker run -it --rm -w \/app -v $(pwd):\/app im-frontend-build ng build<\/pre>\n<h3>FrondEnd\u00a0Ngnix Container<\/h3>\n<p>Copy the Ngnix confs and dist folder to the\u00a0 Ngnix container to run the Angular app<\/p>\n<pre class=\"brush:sql\">FROM nginx\r\nCOPY nginx-config\/nginx.conf \/etc\/nginx\r\nCOPY dist \/var\/www\/im<\/pre>\n<p>docker\u00a0run\u00a0-it -p 80:80 im-frontend<\/p>\n<h3>DockerCompose local<\/h3>\n<p>Pull it all together in docker compose.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/11\/Screen-Shot-2017-11-02-at-12.10.33-AM.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-19061\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/11\/Screen-Shot-2017-11-02-at-12.10.33-AM.png\" alt=\"\" width=\"640\" height=\"564\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/11\/Screen-Shot-2017-11-02-at-12.10.33-AM.png 640w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/11\/Screen-Shot-2017-11-02-at-12.10.33-AM-300x264.png 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>Run docker-compose up -d to build and run the frontend and backend services.<\/p>\n<p>Output:<\/p>\n<pre class=\"brush:bash\">local romiawasthy$ docker-compose up -d\r\nCreating network \"local_default\" with the default driver\r\nCreating local_build_BackEnd_1 ... \r\nCreating local_build_BackEnd_1 ... done\r\nCreating local_backend_1 ... \r\nCreating local_backend_1 ... done\r\nCreating local_build_FrontEnd_1 ... \r\nCreating local_build_FrontEnd_1 ... done\r\nCreating local_frontend_1 ... \r\nCreating local_frontend_1 ... done<\/pre>\n<h3>DockerCompose production<\/h3>\n<p>In the production configuration, build images are excluded.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/11\/Screen-Shot-2017-11-02-at-12.11.50-AM.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-19062\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/11\/Screen-Shot-2017-11-02-at-12.11.50-AM.png\" alt=\"\" width=\"640\" height=\"250\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/11\/Screen-Shot-2017-11-02-at-12.11.50-AM.png 640w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/11\/Screen-Shot-2017-11-02-at-12.11.50-AM-300x117.png 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><br \/>\nRun\u00a0 docker-compose up -d\u00a0to run the frontend and backend services.<\/p>\n<p>Output:<\/p>\n<pre class=\"brush:bash\">production romiawasthy$ docker-compose up -d\r\nStarting production_backend_1 ... \r\nStarting production_backend_1 ... done\r\nCreating production_frontend_1 ... \r\nCreating production_frontend_1 ... done<\/pre>\n<h2>Conclusion<\/h2>\n<p>Docker can be a great option for consistent and shareable development environment across large teams.The pattern allows for using the same docker containers for running the services in both local and production. The pattern can be extended for different build and deployment tools.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Web Code Geeks with permission by Romi Awasthy, 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=\"http:\/\/romiawasthy.blogspot.com\/2017\/11\/fullstack-development-environment-with.html\" target=\"_blank\" rel=\"noopener\">Fullstack development environment with Docker<\/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>I have been using\u00a0Docker for building (compile\/packaging)\u00a0and running web applications for some time. Through this blog, I would like to share how I used docker for building and running a complete (Angular\/SpringBoot)\u00a0webapp in a local and production environments. Docker for development environment In large enterprise projects with distributed development teams, it becomes very difficult to &hellip;<\/p>\n","protected":false},"author":1606,"featured_media":10356,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[217],"class_list":["post-19059","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-docker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Fullstack development environment with Docker - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"I have been using\u00a0Docker for building (compile\/packaging)\u00a0and running web applications for some time. Through this blog, I would like to share how I used\" \/>\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\/devops\/fullstack-development-environment-docker\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fullstack development environment with Docker - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"I have been using\u00a0Docker for building (compile\/packaging)\u00a0and running web applications for some time. Through this blog, I would like to share how I used\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/\" \/>\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-03T10:15:18+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=\"Romi Awasthy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Romi Awasthy\" \/>\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\/devops\/fullstack-development-environment-docker\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/\"},\"author\":{\"name\":\"Romi Awasthy\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/3e2f6d60b72356992e3556d27651f7d2\"},\"headline\":\"Fullstack development environment with Docker\",\"datePublished\":\"2017-11-03T10:15:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/\"},\"wordCount\":733,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"keywords\":[\"Docker\"],\"articleSection\":[\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/\",\"name\":\"Fullstack development environment with Docker - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"datePublished\":\"2017-11-03T10:15:18+00:00\",\"description\":\"I have been using\u00a0Docker for building (compile\/packaging)\u00a0and running web applications for some time. Through this blog, I would like to share how I used\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#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\/devops\/fullstack-development-environment-docker\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/devops\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Fullstack development environment with Docker\"}]},{\"@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\/3e2f6d60b72356992e3556d27651f7d2\",\"name\":\"Romi Awasthy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3ea15003f552caa5e8b1630edb4f8a07c4570afe029feb0c8797e7f64aa90ca5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3ea15003f552caa5e8b1630edb4f8a07c4570afe029feb0c8797e7f64aa90ca5?s=96&d=mm&r=g\",\"caption\":\"Romi Awasthy\"},\"description\":\"Romi is a software architect with a large enterprise. She is passionate about bringing opensource, lean and modern technologies to enterprise\",\"sameAs\":[\"http:\/\/romiawasthy.blogspot.gr\/\",\"http:\/\/www.linkedin.com\/in\/romiawasthy\/\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/romi-awasthy\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fullstack development environment with Docker - Web Code Geeks - 2026","description":"I have been using\u00a0Docker for building (compile\/packaging)\u00a0and running web applications for some time. Through this blog, I would like to share how I used","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\/devops\/fullstack-development-environment-docker\/","og_locale":"en_US","og_type":"article","og_title":"Fullstack development environment with Docker - Web Code Geeks - 2026","og_description":"I have been using\u00a0Docker for building (compile\/packaging)\u00a0and running web applications for some time. Through this blog, I would like to share how I used","og_url":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2017-11-03T10:15:18+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":"Romi Awasthy","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Romi Awasthy","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/"},"author":{"name":"Romi Awasthy","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/3e2f6d60b72356992e3556d27651f7d2"},"headline":"Fullstack development environment with Docker","datePublished":"2017-11-03T10:15:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/"},"wordCount":733,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","keywords":["Docker"],"articleSection":["DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/","url":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/","name":"Fullstack development environment with Docker - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","datePublished":"2017-11-03T10:15:18+00:00","description":"I have been using\u00a0Docker for building (compile\/packaging)\u00a0and running web applications for some time. Through this blog, I would like to share how I used","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/devops\/fullstack-development-environment-docker\/#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\/devops\/fullstack-development-environment-docker\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"DevOps","item":"https:\/\/www.webcodegeeks.com\/category\/devops\/"},{"@type":"ListItem","position":3,"name":"Fullstack development environment with Docker"}]},{"@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\/3e2f6d60b72356992e3556d27651f7d2","name":"Romi Awasthy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3ea15003f552caa5e8b1630edb4f8a07c4570afe029feb0c8797e7f64aa90ca5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3ea15003f552caa5e8b1630edb4f8a07c4570afe029feb0c8797e7f64aa90ca5?s=96&d=mm&r=g","caption":"Romi Awasthy"},"description":"Romi is a software architect with a large enterprise. She is passionate about bringing opensource, lean and modern technologies to enterprise","sameAs":["http:\/\/romiawasthy.blogspot.gr\/","http:\/\/www.linkedin.com\/in\/romiawasthy\/"],"url":"https:\/\/www.webcodegeeks.com\/author\/romi-awasthy\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/19059","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\/1606"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=19059"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/19059\/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=19059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=19059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=19059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}