Dockerize Rails Application

How to Dockerize an existing Rails application?

A curious developer and tech enthusiast, never miss an opportunity to learn something new every day! This urge to learn is something WE can relate to. In this post, we’ll show you how to dockerize a rails application with help from Rails Docker Compose. We need Docker, so you should know what it is and why it is necessary.

Let’s get started with app development and dockerization.

What is Docker?

Using Docker, you can package a service or application with all of its dependencies into a standardized unit. A Docker image is typically used for this type of unit.

All the components needed to run the application are included. Docker images contain code, runtimes, libraries, and anything else you would install on a server to make them run without Docker.

What Makes Docker Different from a Virtual Machine

You may have run a virtual machine using Vagrant, VirtualBox, or VMWare. Despite being able to isolate services, virtual machines are much less efficient because of a few significant differences.

For each application you want to isolate, you need an entire guest operating system. Virtual machines can also take many seconds to boot up, and each can be up to a gigabyte in size.

A Docker container shares your host’s kernel, and isolation is achieved via groups and other kernel libraries. As a result of Docker’s lightweight nature, a container is typically started in a few milliseconds, and it does not require much disk space to run.

What’s the Bottom Line?

Wouldn’t it be great if you could develop your Rails application on your workstation in isolation without using RVM or Chruby, and changing Ruby versions was simple?

Wouldn’t it be great if you could isolate everything you needed for each of your 10 Rails projects without wasting precious SSD storage?

Wouldn’t it be great if you could spin up your Rails, PostgreSQL, Redis, and Sidekiq stack in just a few seconds?

Can you imagine if you could share your project on GitHub and other developers could get everything running in minutes by running only one command?

Thanks to Docker, all of these things are possible.

The Benefits of Using Docker

If Docker offers five key benefits that will improve your software development productivity and overall experience:

1. Consistency across environments

Your application can be encapsulated with Docker so that it can be easily moved between environments. All environments and machines that are capable of running Docker will be able to run it.

2. Easy ways to expand your development team

A new developer shouldn’t have to read a 30-page document to learn how to run your application locally. New developers are likely to make mistakes during this process, which can take all day or longer.

You can automate, repeatable, and efficiently deploy your multi-service application across your team with Docker. A few commands later, everything is working.

3. Choose a technology that fits your needs

You could be putting yourself at a disadvantage as a startup or a shop that only uses one language. You can experiment with new languages and frameworks as a developer by isolating an application in a Docker container.

The technology of your choice no longer needs to be set up by other developers. They can run a Docker image that you hand them.

4. Deploy your image many times by building it once

The pre-built Docker image makes it possible to start your applications in milliseconds. Scalability is very easy as a result.

It is only necessary to run time-consuming tasks once at build time, such as installing dependencies. As soon as the image is built, you can move it around to different hosts.

Besides making your deployments more predictable and resilient, this helps you scale up and down quickly.

5. Operation managers and developers can work together

Developers and operation managers can work together with Docker’s toolset to deploy applications.

An abstraction is provided by Docker. An application can be distributed, and another team does not need to know how to set up or configure it.

Additionally, it becomes easier to distribute Docker images publicly or privately. As new versions are pushed, you can track what has changed.

The prerequisites

Docker needs to be installed. You can run Docker on most major Linux distributions, and there are tools that let you run it on OSX and Windows as well.

Linux users will benefit from this tutorial, but OSX and Windows users will find comments when things need to be adjusted.

Docker installation

You can follow one of the installation guides below based on your operating system:

  • Linux:
  • Windows and Mac:

It is recommended that you have Docker installed and that you have completed the hello world example from one of the above installation guides before proceeding.


The containerization of a production Rails application comes with a number of challenges, as you are no doubt aware. You may have accumulated a number of dependencies as your application has grown, making a migration like this challenging. It doesn’t matter if it’s a background worker, a mailer, or a secret, there are established patterns to handle most pitfalls. The ease of future changes and deployments will make the investment worthwhile once the initial work of getting a production application to work with Docker is completed.

Related Posts

Leave a Comment

Your email address will not be published. Required fields are marked *