{"id":4931,"date":"2018-12-18T15:24:58","date_gmt":"2018-12-18T15:24:58","guid":{"rendered":"https:\/\/discoverpassenger.com.temp.link\/?p=4931"},"modified":"2026-08-07T07:26:00","modified_gmt":"2026-08-07T06:26:00","slug":"doing-our-bit-for-the-development-environment-docker-at-base","status":"publish","type":"post","link":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/","title":{"rendered":"In depth: Doing our bit for the (development) environment with Docker"},"content":{"rendered":"<div class=\"block-core-quote\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Originally posted on our &#8216;Base&#8217; Medium account. <br>In September 2019, <a href=\"https:\/\/medium.com\/@mrtmqy\/going-all-in-4c20d902fe2a\">Base became Passenger<\/a>.<\/p><\/blockquote>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">As the team behind Passenger grows, so have our approaches and processes in software engineering. One such evolution has been our recent move to Docker, when we decided that our Vagrant\/Ansible solution was no longer fit for purpose.<\/p>\n<\/div>\n\n<div class=\"block-core-image aligncenter\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1616\" height=\"944\" src=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev.png\" alt=\"\" class=\"wp-image-12747\" srcset=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev.png 1616w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev-300x175.png 300w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev-1024x598.png 1024w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev-768x449.png 768w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev-1536x897.png 1536w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev-1568x916.png 1568w\" sizes=\"auto, (max-width: 1616px) 100vw, 1616px\" \/><\/figure><\/div>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">On the surface, Passenger \u2014 Base\u2019s core product offering \u2014 is an easy to use, customer-facing digital product. Look more deeply and you\u2019ll find that the system comprises a number of&nbsp;<a target=\"_blank\" href=\"https:\/\/medium.com\/wearebase\/all-the-databases-3beb33adaa80\" rel=\"noreferrer noopener\">different technologies and databases<\/a>. It is the combination of these, working as one beneath Passenger\u2019s app and web surface, that attracts such heartwarming feedback from users on a daily basis.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">We recently invested in Docker to help us build, manage and secure each Passenger application in a more efficient way. Read on to better understand the work we\u2019re doing to make Passenger a stronger, more reliable solution for all that use it.<\/p>\n<\/div>\n\n<div class=\"block-core-image aligncenter\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"450\" src=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/whywemoveddocker.png\" alt=\"\" class=\"wp-image-12748\" srcset=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/whywemoveddocker.png 450w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/whywemoveddocker-300x300.png 300w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/whywemoveddocker-150x150.png 150w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/figure><\/div>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\"><strong>Why we moved to Docker!<\/strong><\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Passenger\u2019s numerous development environments were previously built using&nbsp;<a href=\"https:\/\/www.vagrantup.com\/intro\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">Vagrant<\/a>&nbsp;and our production&nbsp;<a href=\"https:\/\/www.ansible.com\/overview\/it-automation\" target=\"_blank\" rel=\"noreferrer noopener\">Ansible<\/a>&nbsp;playbooks \u2014 scripts\/configuration files which turn blank machines into a fully configured boxes that can serve requests.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">As Vagrant uses virtual machines as its backend, Passenger benefited from some great separation between its development environments. However, that was also a very resource intensive approach. Vagrant creates a new VM for each application used at Passenger, which requires fixed CPU, disk and memory to be allocated. We previously used an Ubuntu LTS base image for this \u2014 one of the most popular distributions. The Ansible playbook would then run on this VM, which creates a fully configured environment ready to serve requests.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">These \u201cfull-fat\u201d VMs with fixed resource allocation can be a time sink. Rebuilding the whole Passenger stack takes around an hour \u2014 not to mention requiring expensive hardware in order to run the stack performantly. When developing, full requests \u2014 depending on the complexity \u2014 could take 5\u201320 seconds to compute. An eternity in development time.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">When we&nbsp;<a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/medium.com\/wearebase\/base-is-growing-meet-our-lovely-new-team-410e8855c307\">increased the amount of engineers<\/a>&nbsp;working on the Passenger stack this summer (2018), it quickly became apparent that this development environment was no longer the fit-for-purpose solution it had been before. Technology and common practice have shifted towards containerised environments.<\/p>\n<\/div>\n\n<div class=\"block-core-image aligncenter\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"405\" src=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/containingtheproblem.png\" alt=\"\" class=\"wp-image-12749\" srcset=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/containingtheproblem.png 450w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/containingtheproblem-300x270.png 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/figure><\/div>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\"><strong>Containing the problem<\/strong><\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">As containers use dynamic resource allocation, they do not require an up-front allocation of disk, CPU or memory (although you can reserve these for each container if required). Importantly, containers are also a much more native approach, as no virtualization is required. The application runs natively on the host machine, but using a different base image than the host. (Developers even use different operating systems \u2014 the most popular is Debian-based Linux distributions, we also have OpenSuse Tumbleweed, Fedora and MacOS.)<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">The most popular, easiest, and most portable way of implementing containerized environments today is&nbsp;<a href=\"https:\/\/www.docker.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker<\/a>. This approach defines the environment in a special Dockerfile. Docker then creates a container using a base image. We chose an Alpine base image; an extremely small linux distribution. This is built using&nbsp;<a href=\"https:\/\/www.musl-libc.org\/doc\/1.0.0\/manual.html\" target=\"_blank\" rel=\"noreferrer noopener\">musl<\/a>&nbsp;rather than the bigger&nbsp;<a href=\"https:\/\/www.gnu.org\/software\/libc\/libc.html\" target=\"_blank\" rel=\"noreferrer noopener\">glibc<\/a>, which is more standard. The Dockerfile contains a list of commands that can bring this container into a fully functioning environment.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">This approach results in far fewer lines of configuration than the Vagrant\/Ansible solution \u2014 with the added benefit of keeping everything in a single file, which makes the whole application environment visible at a glance.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">As our services often require other programs which would not be suited to run in the same container as the application, e.g. MariaDB, Elasticsearch &amp; Redis, we\u2019ve also adopted Docker Compose, a tool that enables us to further define how Passenger\u2019s multiple application containers can come together to build an overall service.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Docker Compose enables us to create a specification in a docker-compose.yml for each service that defines how multiple containers come together to build a service. We also have environment specific compose files, which overlay with the base file to apply adjustments, such as enable debugging and disable master\/slave replication in development.<\/p>\n<\/div>\n\n<div class=\"block-core-image aligncenter\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"450\" src=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/whatdoesthismean.png\" alt=\"\" class=\"wp-image-12750\" srcset=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/whatdoesthismean.png 450w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/whatdoesthismean-300x300.png 300w, https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/whatdoesthismean-150x150.png 150w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/figure><\/div>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\"><strong>What does all this mean for Passenger?<\/strong><\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">The process of dockerizing our development environments was not an easy one.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">First off, the diversity of the Base engineers and the variety of preferred development systems they use was the cause of several headaches.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Furthermore, MacOS does not support host bridged networking. A container cannot be assigned a unique ip address for communication; instead, different ports must be bound to the host for each container.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">We also had issues around the osxfs filesystem with MariaDB. This required us to use docker volumes instead of mounting directly into the host filesystem.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">But, despite these early issues\u2026<\/p>\n<\/div>\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\"><li>We can now rebuild our entire development stack in ~8 minutes rather than 1 hour<\/li><li>Our development machines have significantly more available CPU, memory and disk space:<\/li><li>We have gone from 8GB of memory used to &lt; 1GB<\/li><li>\u2026and from ~100GB of disk space to &lt; 8GB<\/li><li>Requests with full debugging have reduced from 20\u20132 seconds to 800\u2013125 milliseconds<\/li><\/ul>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">So\u2026 a little bit of hard work, and some smart investment in tooling, has really paid off. We\u2019ll keep improving our build tools and engineering infrastructure as time goes on. This will ensure that the product features that our customers are buying into, are supported by everything needed to deliver them reliably, and at scale.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.discoverpassenger.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Learn more about Passenger and the work that we do.<\/a><\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>As the team behind Passenger grows, so have our approaches and processes in software engineering.<\/p>\n","protected":false},"author":7,"featured_media":12747,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[21],"tags":[],"class_list":["post-4931","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-making-passenger","making-passenger"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>In depth: Doing our bit for the (development) environment with Docker - Masabi<\/title>\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.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"In depth: Doing our bit for the (development) environment with Docker - Masabi\" \/>\n<meta property=\"og:description\" content=\"As the team behind Passenger grows, so have our approaches and processes in software engineering.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/\" \/>\n<meta property=\"og:site_name\" content=\"Masabi\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-18T15:24:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-07T06:26:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1616\" \/>\n\t<meta property=\"og:image:height\" content=\"944\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"TomQuay\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"TomQuay\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/\"},\"author\":{\"name\":\"TomQuay\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#\\\/schema\\\/person\\\/7f9321d16421f5dd31179aec75bd022d\"},\"headline\":\"In depth: Doing our bit for the (development) environment with Docker\",\"datePublished\":\"2018-12-18T15:24:58+00:00\",\"dateModified\":\"2026-08-07T06:26:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/\"},\"wordCount\":915,\"image\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/doingourbitforthedev.png\",\"articleSection\":[\"Making Passenger\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/\",\"url\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/\",\"name\":\"In depth: Doing our bit for the (development) environment with Docker - Masabi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/doingourbitforthedev.png\",\"datePublished\":\"2018-12-18T15:24:58+00:00\",\"dateModified\":\"2026-08-07T06:26:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#\\\/schema\\\/person\\\/7f9321d16421f5dd31179aec75bd022d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/doingourbitforthedev.png\",\"contentUrl\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/doingourbitforthedev.png\",\"width\":1616,\"height\":944},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/doing-our-bit-for-the-development-environment-docker-at-base\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"In depth: Doing our bit for the (development) environment with Docker\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/\",\"name\":\"Masabi\",\"description\":\"Making shared transport the first choice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#\\\/schema\\\/person\\\/7f9321d16421f5dd31179aec75bd022d\",\"name\":\"TomQuay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g\",\"caption\":\"TomQuay\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"In depth: Doing our bit for the (development) environment with Docker - Masabi","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.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/","og_locale":"it_IT","og_type":"article","og_title":"In depth: Doing our bit for the (development) environment with Docker - Masabi","og_description":"As the team behind Passenger grows, so have our approaches and processes in software engineering.","og_url":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/","og_site_name":"Masabi","article_published_time":"2018-12-18T15:24:58+00:00","article_modified_time":"2026-08-07T06:26:00+00:00","og_image":[{"width":1616,"height":944,"url":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev.png","type":"image\/png"}],"author":"TomQuay","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"TomQuay","Tempo di lettura stimato":"5 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/#article","isPartOf":{"@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/"},"author":{"name":"TomQuay","@id":"https:\/\/www.masabi.com\/it\/#\/schema\/person\/7f9321d16421f5dd31179aec75bd022d"},"headline":"In depth: Doing our bit for the (development) environment with Docker","datePublished":"2018-12-18T15:24:58+00:00","dateModified":"2026-08-07T06:26:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/"},"wordCount":915,"image":{"@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/#primaryimage"},"thumbnailUrl":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev.png","articleSection":["Making Passenger"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/","url":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/","name":"In depth: Doing our bit for the (development) environment with Docker - Masabi","isPartOf":{"@id":"https:\/\/www.masabi.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/#primaryimage"},"image":{"@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/#primaryimage"},"thumbnailUrl":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev.png","datePublished":"2018-12-18T15:24:58+00:00","dateModified":"2026-08-07T06:26:00+00:00","author":{"@id":"https:\/\/www.masabi.com\/it\/#\/schema\/person\/7f9321d16421f5dd31179aec75bd022d"},"breadcrumb":{"@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/#primaryimage","url":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev.png","contentUrl":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/doingourbitforthedev.png","width":1616,"height":944},{"@type":"BreadcrumbList","@id":"https:\/\/www.masabi.com\/it\/news\/doing-our-bit-for-the-development-environment-docker-at-base\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.masabi.com\/it\/"},{"@type":"ListItem","position":2,"name":"In depth: Doing our bit for the (development) environment with Docker"}]},{"@type":"WebSite","@id":"https:\/\/www.masabi.com\/it\/#website","url":"https:\/\/www.masabi.com\/it\/","name":"Masabi","description":"Making shared transport the first choice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.masabi.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.masabi.com\/it\/#\/schema\/person\/7f9321d16421f5dd31179aec75bd022d","name":"TomQuay","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g","caption":"TomQuay"}}]}},"_links":{"self":[{"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/posts\/4931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/comments?post=4931"}],"version-history":[{"count":0,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/posts\/4931\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/media\/12747"}],"wp:attachment":[{"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/media?parent=4931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/categories?post=4931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/tags?post=4931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}