Giter Site home page Giter Site logo

kenanwarren / docker-compose-rails-dev-example Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vovimayhem/docker-compose-rails-dev-example

0.0 1.0 0.0 54 KB

A Docker compose project example I use to develop rails apps with Docker

License: MIT License

Ruby 71.00% JavaScript 1.55% CoffeeScript 0.50% CSS 4.44% HTML 15.83% Shell 6.67%

docker-compose-rails-dev-example's Introduction

Example of a Rails App with Docker Compose for development

This is an example of how I use Docker and Docker Compose to develop my rails apps.

It is an ideal project setup for new and experienced developers alike, and allows to a nearly trouble-free environment setup in their development machines.

In this example we'll fire up a full app environment consisting of the following:

You'll need to follow some instructions to get this example running:

1: Requirements

You must have Docker and Docker Compose on your machine.

You can install these with:

2: 'Clone & Run' the project

You should clone the project into a conveniently-named directory, as this repo's name is big enough to make typing docker/compose commands tiresome, should the need arise:

git clone https://github.com/vovimayhem/docker-compose-rails-dev-example.git example \
  && cd example \
  && docker-compose up -d web jobs \
  && docker-compose logs -f

Watch it as it starts all the containers, and how the app database is initialized upon the first run before starting the rails web server.

3: NOT ANYMORE: Initialize the app environment in an initial run:

Originally there was some setup to be made prior to running the app. Fortunately a lot of changes happened since then, and although the dotenv file is recommended, it is not required for the project to run immediately after cloning.

If you need to, however, you can copy the contents of the example dotenv file into a file called .env:

cp example.env .env

Docker Compose now reads the /.env file by default, if it exists. You can still add other dotenv files and reference them in the docker-compose.yml file, but that would require an additional step than the coveted 'clone and run' project setup.

4: Bring online the project's containers

docker-compose up -d

That's it! Check the running app web interface: http://localhost:3000

5: Next steps

I usually do some tricks to aid in my day to day activities:

Modifying the /etc/hosts file for rails apps that depend on subdomains

Pretty self-explanatory.

Generate aliases to the docker-compose command... or use Plis

The docker-compose commands are a bit lengthy for my taste, so I started generating some bash aliases... eventually I created a small Go app called Plis which besides having a smalled character count, it allows me to attach to any container using the service name, which is a must to debug the app using byebug:

plis start web && plis attach web
# => Converts the commands to `docker-compose up -d web && docker attach example_web_1`

Create a new rails project with Docker

Create a new rails app using docker, if you find yourself in the need of creating a new app, and you are already running this example project.

6: Example app ruby version

It uses MRI ruby 2.2.6. I'll make some branches using different engines (i.e. Rubinius, JRuby)

7: More Information

8: Contributing

I'd love to receive feedback & suggestions from everyone. If you see something off, or think there's a better way to do something this thing does, please do:

  • Fork the original repository.
  • Make your changes in a topic branch.
  • Send a pull request.

License

This is free software, and may be redistributed under the terms specified in the LICENSE file.

docker-compose-rails-dev-example's People

Contributors

vovimayhem avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.