Dockerize Rails 6 with ActionCable, Webpacker, Stimulus, Elasticsearch, Sidekiq
Simple Rails 6.1 application to demonstrate using Docker for production deployment. The application is a very simple kind of CMS (content management system) allowing to manage posts. Beside the boring CRUD functionality it has some non-default features.
This project aims to build a lean Docker image for use in production. Therefore it's based on the official Alpine Ruby image, uses multi-stage building and some optimizations that I described in my blog. This results in an image size of ~80MB.
This project demonstrates my way of building Rails applications. The techniques used to build the app should not be considered as "best practice", maybe there are better ways to build. Any feedback would be appreciated.
There is an example docker-compose.production.yml. The whole stack is divided into multiple different containers:
To start up the application in your local Docker environment:
git clone https://github.com/ledermann/docker-rails.git cd docker-rails docker-compose build docker-compose up
Wait some minutes while the database will be prepared by fetching articles from Wikipedia. Then, navigate your browser to
Sign in to the admin account:
The Docker image build includes precompiled assets only (no node_modules and no sources). The spec folder is removed and the Alpine packages for Node and Yarn are not installed.
A demo installation is set up on https://docker-rails.georg-ledermann.de.