Simple development workflow for using docker for rails development.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
app
bin
config
db
lib
public
test
vendor/assets
.gitignore
Dockerfile
Gemfile
Gemfile.lock
LICENSE
README.md
Rakefile
config.ru

README.md

Docker Rails Development Demo

This is a simple proof-of-concept showing an easy way to perform rails development locally using docker. This image is not pushed to DockerHub since it would not be useful, as you need to put the Dockerfile in a local directory on your machine in order to fully reap the benefits.

By using this Dockerfile, you are provided with a 2 way sync (provided by docker volumes) which allows you to make changes to your project in a directory on your local system and have them show up in your docker container.

This container should not be used in production, as its sole purpose is making it easier to get up and running for development.

Everything below here assumes that you have already installed Docker in the correct method for your system.

Building the image

In order to build the image for your rails application, you will need to run

docker build -t yourname/reponame .

For example in my case the command I ran was

docker build -t rbclark/rails-dev .

This creates a new Docker image on your system which contains all of the current version of your gems used by the project.

Running the image

At this point you have an image built with your gems in it. You can now quickly spin up a development environment by running

docker run -d -v "your source directory here":/src/docker-rails-test-app -p 3000:3000 yourname/reponame

Where your source directory is the location that you ran docker build from. In my case I always run the command from the directory containing my source code and use the pwd command to get my current working directory, like so

docker run -d -v `pwd`:/src/docker-rails-test-app -p 3000:3000 rbclark/rails-dev

Running commands

Lets say you would like to still be able to run the rails commands in order to still have access to conveniences like rails generate. Fortunately this is still possible! Simply run

docker ps

To get the CONTAINER ID or NAME, and then run

docker exec NAME rails (rest of desired command here)

For example

docker exec high_hypatia rails generate controller welcome index

The same can be done for bundle or any other command you wish to run on the Docker container.

Updating gems

You can add and remove gems as needed by modifying the Gemfile, however after you have done so, it is suggested that you rebuild your Docker image using the steps above. This is because the gems are built into the container and you will otherwise run into an issue where you have to bundle install each time you create a new development container.