Capistrano::Dockerized
Add tasks for capistrano to deploy with docker compose.
Installation
Add this line to your Gemfile
gem 'capistrano-dockerized'
And then execute:
$ bundle
Or install it yourself as:
$ gem install capistrano-dockerized
Usage
Add this line to your Capfile
:
require 'capistrano/dockerized
Options for deployment
You can specify the following options in you deploy.rb
script or the environment specific deploy file:
- dockerized_restart: An array of services that should be restarted each deployment, if not specified dockerized will restart all services
- dockerized_web_service: The web service that will be used to execute commands inside like
rake
or any interactive command fromdockerized:run
, default value: :web - dockerized_rake_tasks: A set of rake tasks to execute after each deploy, default value is
nil
For a typical rails application the previous options should be as follows, given that the application container service name is web
:
set :dockerized_restart, [:web]
set :dockerized_web_service, :web
set :dockerized_rake_tasks, ['db:migrate', 'assets:precompile']
Defined Tasks
dockerized:build # build docker-compose services
dockerized:clean # delete docker images that are not related to current build
dockerized:down # shutdown all project services with docker-compose
dockerized:rake_tasks # execute a set of rake tasts inside the web container
dockerized:restart # restart services of docker-compose and if not services listed restart all services
dockerized:run # run an interactive command inside the web container
dockerized:up # boot up all docker-compose services
After the first deployment of a rails application
You would need to setup your database by invoking the db:setup
task to create and seed your database:
cap production dockerized:run rake db:setup
General note
- This gem doesn't provide a
dockerfile
nordocker-compose.yml
file, you have to create these files yourself - The linked directories and files will not work and you should use docker data volumes anyway