{"id":8388,"date":"2015-11-13T16:15:25","date_gmt":"2015-11-13T14:15:25","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=8388"},"modified":"2015-12-16T10:45:45","modified_gmt":"2015-12-16T08:45:45","slug":"heroku-style-application-deployments-docker","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/","title":{"rendered":"Heroku Style Application Deployments with Docker"},"content":{"rendered":"<p><em>In this article, we describe how you can use Kontena\u2019s experimental features for deploying application with Kontena just like with Heroku!<\/em><\/p>\n<p>Developing and deploying applications to <a href=\"https:\/\/www.heroku.com\/\">Heroku<\/a> was revolutionary when it was introduced. A developer could just focus on developing a killer app instead of configuring servers and build scripts.<\/p>\n<p>Heroku, just like many other <a href=\"https:\/\/en.wikipedia.org\/wiki\/Platform_as_a_service\">platform-as-a-service<\/a> (PaaS) solutions, allows developers to deploy applications written in a supported programming language, to a hosted cloud platform. The deployment is typically made with <code>git push<\/code> to a PaaS platform specific repository. On deploy, the platform will detect the programming language and build and run the application.<\/p>\n<p>With PaaS platforms, developers can enjoy highly automated deployment processes. <a href=\"https:\/\/github.com\/kontena\/kontena\">Kontena<\/a> aims to enable the same convenience for people moving away from PaaS solutions to Docker containers. Since Heroku is one of the most polished and developer-friendly PaaS platforms out there, we wanted to see if it\u2019s possible to create a similar development workflow with Kontena.<\/p>\n<h2>Getting an Application Running on Kontena<\/h2>\n<p>After you have provisioned Master node and host nodes, you\u2019re ready to start deploying applications to Kontena. See our <a href=\"http:\/\/www.kontena.io\/docs\/getting-started\/quick-start\">Quick Start<\/a> guide for more details.<\/p>\n<p>The first step of running your application on Kontena is to Dockerize it. With Kontena it\u2019s easy: Just call <code>kontena app init<\/code> command. It creates the necessary <code>Dockerfile<\/code>, <code>docker-compose.yml<\/code>, and <code>kontena.yml<\/code> files.<\/p>\n<p>The generated Dockerfile is by default based on <a href=\"https:\/\/github.com\/progrium\/buildstep\">Buildstep<\/a> which enables Heroku-style application builds with Docker. Buildstep has a <a href=\"https:\/\/github.com\/gliderlabs\/herokuish\/tree\/master\/buildpacks\">list of officially supported buildpacks<\/a> that are built-in and ready to be used.<\/p>\n<p>In addition to Dockerfile generation, Kontena parses the <code>app.json<\/code> manifest file and <code>Procfile<\/code>. Based on those files, it describes necessary application and add-on services in <code>kontena.yml<\/code> and generates related environment variables in <code>.env<\/code> file.<\/p>\n<p>When your application is Dockerized, you can deploy it with <code>kontena app deploy<\/code> command. On deploy, Kontena builds a Docker image for your application automatically, detects your application type based on the source code, and prepares the required running environment for it.<\/p>\n<p>After the build is ready, Kontena pushes the created Docker image to image registry. By default, Kontena uses a <a href=\"http:\/\/www.kontena.io\/docs\/using-kontena\/image-registry\">built-in, self-hosted Docker registry<\/a>, but you can change it in <code>kontena.yml<\/code>.<\/p>\n<p>On deployment, Kontena orchestrates Docker containers and deploys the app to host nodes.<\/p>\n<p>When the deploy completes, you have your app and all necessary add-on services up and running.<\/p>\n<h2>Example<\/h2>\n<p>Let\u2019s try this out with a <a href=\"https:\/\/github.com\/kontena\/sinatra-example\">simple Heroku styled Ruby\/Sinatra application<\/a> that has one endpoint that shows how many times page has been visited:<\/p>\n<h2>web.rb<\/h2>\n<pre class=\" brush:php\">require 'sinatra'  \r\nrequire 'redis'\r\n\r\nget '\/' do  \r\n  redis = Redis.new(:url =&gt; ENV['REDIS_URL']) \r\n  redis.incr \"count\" \r\n  \"Hello, world called #{redis.get(\"count\")} times\" \r\nend<\/pre>\n<p>Then we define our application in <code>app.json<\/code> manifest with one <code>openredis<\/code> addon:<\/p>\n<pre class=\" brush:php\">{ \r\n  \"name\": \"Sinatra example application\", \r\n  \"description\": \"This app is a basic Sinatra application.\", \r\n  \"keywords\": [ \r\n    \"kontena\", \r\n    \"ruby\", \r\n    \"sinatra\", \r\n    \"redis\" \r\n  ], \r\n  \"website\": \"http:\/\/www.kontena.io\", \r\n  \"repository\": \"https:\/\/github.com\/kontena\/redis-example\", \r\n  \"success_url\": \"\/\", \r\n  \"addons\": [ \r\n    \"openredis\" \r\n  ] \r\n}<\/pre>\n<p>We also need to introduce our processes in <code>Procfile<\/code>:<\/p>\n<pre class=\" brush:php\">web: bundle exec ruby web.rb -p $PORT<\/pre>\n<p>Now we\u2019re ready to Dockerize our application by running:<\/p>\n<pre class=\" brush:php\">$ kontena app init<\/pre>\n<p>It creates all the necessary Docker and Kontena related files and services, and we can just deploy our app:<\/p>\n<pre class=\" brush:php\">$ kontena app deploy<\/pre>\n<h2>Scaling the Application<\/h2>\n<p>In order to scale the application, we need to attach it to a <a href=\"http:\/\/www.kontena.io\/docs\/using-kontena\/loadbalancer\">Kontena Load Balancer<\/a>. To do that, we must first create a load balancer service to the grid:<\/p>\n<pre class=\" brush:php\">$ kontena service create --ports 80:80 internet_lb \r\nkontena\/lb:latest<\/pre>\n<p>Then we can edit the <code>kontena.yml<\/code> file and set the number of running instances and attach service to the load balancer service. That can be done with <code>external_links<\/code> property and environment variables:<\/p>\n<pre class=\" brush:php\">web:  \r\n  ... \r\n  instances: 2 \r\n  external_links: \r\n    - internet_lb \r\n  environment: \r\n    - KONTENA_LB_MODE=http \r\n    - KONTENA_LB_BALANCE=roundrobin \r\n    - KONTENA_LB_INTERNAL_PORT=5000 \r\n    - KONTENA_LB_VIRTUAL_HOSTS=www.yourdomain.com,yourdomain.com<\/pre>\n<p>See <a href=\"https:\/\/github.com\/kontena\/sinatra-example\/blob\/master\/kontena.yml.example\">example kontena.yml<\/a> for the complete example.<\/p>\n<p>After that we can just re-deploy our web service:<\/p>\n<pre class=\" brush:php\">$ kontena app deploy web<\/pre>\n<h2>Conclusion<\/h2>\n<p>We have demonstrated that it\u2019s possible to have a Heroku-like application development workflow when working with Docker containers. You can enjoy best parts of both worlds: a super-easy application development workflow combined with pure Docker containers.<\/p>\n<p>We\u2019re still working and experimenting with this feature, so expect to see some changes in the future. Some of the improvements we\u2019re thinking about include:<\/p>\n<ul>\n<li>Automatically attach \u201cweb\u201d services to Kontena\u2019s load balancer<\/li>\n<li>Allow Heroku-like easy scaling for application<\/li>\n<li>Make Buildstep produce smaller images. The current implementation produces images that are too big; typically over 1GB!<\/li>\n<\/ul>\n<p>Let us know what you think and\/or help us by contributing to the <a href=\"https:\/\/github.com\/kontena\/kontena\">Kontena open source project<\/a>. Looking forward to see you again!<\/p>\n<h2>About Kontena<\/h2>\n<p><a href=\"http:\/\/www.kontena.io\/\">Kontena<\/a> is a new, open-source Docker platform including orchestration, service discovery, overlay networking, and all the tools required to run your containerized workloads. Kontena is built to maximize developer happiness. It works on any cloud, it\u2019s easy to set up, and super simple to use. <a href=\"http:\/\/www.kontena.io\/docs\/getting-started\/quick-start\">Give it a try!<\/a> If you like it, please star it on <a href=\"https:\/\/github.com\/kontena\/kontena\">GitHub<\/a> and follow us on <a href=\"https:\/\/twitter.com\/KontenaInc\">Twitter<\/a>. We hope to see you again!<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/blog.codeship.com\/heroku-style-application-deployments-with-docker\/\">Heroku Style Application Deployments with Docker<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/wcg\/\">WCG partner<\/a> Florian Motlik at the <a href=\"http:\/\/blog.codeship.com\/\">Codeship Blog<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this article, we describe how you can use Kontena\u2019s experimental features for deploying application with Kontena just like with Heroku! Developing and deploying applications to Heroku was revolutionary when it was introduced. A developer could just focus on developing a killer app instead of configuring servers and build scripts. Heroku, just like many other &hellip;<\/p>\n","protected":false},"author":114,"featured_media":4128,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[217,244],"class_list":["post-8388","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ruby","tag-docker","tag-heroku"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Heroku Style Application Deployments with Docker - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"In this article, we describe how you can use Kontena\u2019s experimental features for deploying application with Kontena just like with Heroku! Developing and\" \/>\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\/ruby\/heroku-style-application-deployments-docker\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Heroku Style Application Deployments with Docker - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"In this article, we describe how you can use Kontena\u2019s experimental features for deploying application with Kontena just like with Heroku! Developing and\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-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=\"2015-11-13T14:15:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-12-16T08:45:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-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=\"Lauri Nevala\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nevalau\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lauri Nevala\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/\"},\"author\":{\"name\":\"Lauri Nevala\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/517cd9e867e2cdff8ad07dd5481deb9e\"},\"headline\":\"Heroku Style Application Deployments with Docker\",\"datePublished\":\"2015-11-13T14:15:25+00:00\",\"dateModified\":\"2015-12-16T08:45:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/\"},\"wordCount\":750,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-logo.jpg\",\"keywords\":[\"Docker\",\"Heroku\"],\"articleSection\":[\"Ruby\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/\",\"name\":\"Heroku Style Application Deployments with Docker - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-logo.jpg\",\"datePublished\":\"2015-11-13T14:15:25+00:00\",\"dateModified\":\"2015-12-16T08:45:45+00:00\",\"description\":\"In this article, we describe how you can use Kontena\u2019s experimental features for deploying application with Kontena just like with Heroku! Developing and\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ruby\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/ruby\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Heroku Style Application Deployments 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\/517cd9e867e2cdff8ad07dd5481deb9e\",\"name\":\"Lauri Nevala\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cfb06fcdc0d879ca4afb846a35a422c28022c8d89e987a1e8d7d6286907cb73a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cfb06fcdc0d879ca4afb846a35a422c28022c8d89e987a1e8d7d6286907cb73a?s=96&d=mm&r=g\",\"caption\":\"Lauri Nevala\"},\"description\":\"Lauri is a co-founder of Kontena. He is a cloud-oriented, full-stack developer, fascinated by Ruby.\",\"sameAs\":[\"http:\/\/www.kontena.io\/\",\"https:\/\/x.com\/nevalau\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/lauri-nevala\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Heroku Style Application Deployments with Docker - Web Code Geeks - 2026","description":"In this article, we describe how you can use Kontena\u2019s experimental features for deploying application with Kontena just like with Heroku! Developing and","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\/ruby\/heroku-style-application-deployments-docker\/","og_locale":"en_US","og_type":"article","og_title":"Heroku Style Application Deployments with Docker - Web Code Geeks - 2026","og_description":"In this article, we describe how you can use Kontena\u2019s experimental features for deploying application with Kontena just like with Heroku! Developing and","og_url":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2015-11-13T14:15:25+00:00","article_modified_time":"2015-12-16T08:45:45+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-logo.jpg","type":"image\/jpeg"}],"author":"Lauri Nevala","twitter_card":"summary_large_image","twitter_creator":"@nevalau","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Lauri Nevala","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/"},"author":{"name":"Lauri Nevala","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/517cd9e867e2cdff8ad07dd5481deb9e"},"headline":"Heroku Style Application Deployments with Docker","datePublished":"2015-11-13T14:15:25+00:00","dateModified":"2015-12-16T08:45:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/"},"wordCount":750,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-logo.jpg","keywords":["Docker","Heroku"],"articleSection":["Ruby"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/","url":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/","name":"Heroku Style Application Deployments with Docker - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-logo.jpg","datePublished":"2015-11-13T14:15:25+00:00","dateModified":"2015-12-16T08:45:45+00:00","description":"In this article, we describe how you can use Kontena\u2019s experimental features for deploying application with Kontena just like with Heroku! Developing and","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/04\/ruby-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/ruby\/heroku-style-application-deployments-docker\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Ruby","item":"https:\/\/www.webcodegeeks.com\/category\/ruby\/"},{"@type":"ListItem","position":3,"name":"Heroku Style Application Deployments 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\/517cd9e867e2cdff8ad07dd5481deb9e","name":"Lauri Nevala","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cfb06fcdc0d879ca4afb846a35a422c28022c8d89e987a1e8d7d6286907cb73a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cfb06fcdc0d879ca4afb846a35a422c28022c8d89e987a1e8d7d6286907cb73a?s=96&d=mm&r=g","caption":"Lauri Nevala"},"description":"Lauri is a co-founder of Kontena. He is a cloud-oriented, full-stack developer, fascinated by Ruby.","sameAs":["http:\/\/www.kontena.io\/","https:\/\/x.com\/nevalau"],"url":"https:\/\/www.webcodegeeks.com\/author\/lauri-nevala\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/8388","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\/114"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=8388"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/8388\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/4128"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=8388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=8388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=8388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}