capistrano-docker-compose 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +20 -6
- data/docker-compose-staging.example.yml +14 -0
- data/lib/capistrano/docker/compose/version.rb +1 -1
- data/lib/capistrano/docker/tasks/compose.rake +12 -6
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c309bf938b62b19da661f3c67206bf67ac201619
|
4
|
+
data.tar.gz: e9921eebbf00477019f64e17574fd5534ab7b60b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b471c2559ca3a7a8419052bfe5c7fe378fe357df3a49fb86ae780a49b4fc5ad571006f05eb823305afb5b90f533331611ba8f9fe92b5cf96b797f2814b6fdd74
|
7
|
+
data.tar.gz: fec4895fa2d43e0951bee4cd65924be5da5715a70112fab79c1ae279dbdcc82e6de7d8ec6a0a124899446a2df27c4945f472050eba549e584ad15c0642ee80de
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Capistrano::Docker::Compose
|
1
|
+
# Capistrano::Docker::Compose [](https://travis-ci.org/interactive-pioneers/capistrano-docker-compose) [](https://badge.fury.io/rb/capistrano-docker-compose)
|
2
2
|
|
3
3
|
Docker Compose specific tasks for Capistrano allowing seamless zero downtime containerised deployments.
|
4
4
|
|
@@ -33,6 +33,13 @@ Create Docker Compose descriptors for each environment leaving `docker-compose.y
|
|
33
33
|
- `docker-compose-staging.yml`
|
34
34
|
- `docker-compose-production.yml`
|
35
35
|
|
36
|
+
Make Compose YAML dynamic with following environment variables:
|
37
|
+
|
38
|
+
- `CAP_DOCKER_COMPOSE_ROOT_PATH` for shared path
|
39
|
+
- `CAP_DOCKER_COMPOSE_PORT` for port range
|
40
|
+
|
41
|
+
See also [Compose YAML example](https://github.com/interactive-pioneers/capistrano-docker-compose/blob/master/docker-compose-staging.example.yml).
|
42
|
+
|
36
43
|
Add `capistrano-docker-compose` to `Capfile`:
|
37
44
|
|
38
45
|
``` ruby
|
@@ -40,18 +47,25 @@ Add `capistrano-docker-compose` to `Capfile`:
|
|
40
47
|
require 'capistrano/docker/compose'
|
41
48
|
```
|
42
49
|
|
43
|
-
|
50
|
+
Configure following Docker Compose specific options in `config/deploy.rb` and/or `config/deploy/<environment>.rb`:
|
44
51
|
|
45
52
|
```ruby
|
46
|
-
# User name when running the Docker image (reflecting Docker's USER instruction)
|
47
|
-
# Example: set :docker_compose_user, 'pioneer'
|
48
|
-
set :docker_compose_user, '<username>'
|
49
|
-
|
50
53
|
# Define port range in respect to load balancer on server
|
51
54
|
# If 2 or more environments reside on same server, configure port range as per environment
|
52
55
|
# Ruby's Range object is expected, see http://ruby-doc.org/core-2.3.0/Range.html
|
53
56
|
# Example: set :docker_compose_port_range, 2070..2071
|
54
57
|
set :docker_compose_port_range, <port>..<port>
|
58
|
+
|
59
|
+
# OPTIONAL
|
60
|
+
# User name when running the Docker image (reflecting Docker's USER instruction)
|
61
|
+
# Example: set :docker_compose_user, 'pioneer'
|
62
|
+
set :docker_compose_user, '<username>'
|
63
|
+
|
64
|
+
# OPTIONAL
|
65
|
+
# Roles considered
|
66
|
+
# Defaults to :all
|
67
|
+
# Example: set :docker_compose_roles, :web
|
68
|
+
set :docker_compose_roles, <roles>
|
55
69
|
```
|
56
70
|
|
57
71
|
Configure load balancer with port range defined in `docker_compose_port_range`, see [example configuration](https://github.com/interactive-pioneers/capistrano-docker-compose/blob/master/haproxy.example.cfg).
|
@@ -0,0 +1,14 @@
|
|
1
|
+
version: '2'
|
2
|
+
services:
|
3
|
+
web:
|
4
|
+
image: ipioneers/passenger-ruby:2.3
|
5
|
+
expose:
|
6
|
+
- 80
|
7
|
+
volumes:
|
8
|
+
- .:/home/app
|
9
|
+
- ../../shared:${CAP_DOCKER_COMPOSE_ROOT_PATH}/shared
|
10
|
+
ports:
|
11
|
+
- "${CAP_DOCKER_COMPOSE_PORT}:80"
|
12
|
+
environment:
|
13
|
+
- RAILS_ENV=staging
|
14
|
+
- PASSENGER_APP_ENV=staging
|
@@ -1,11 +1,17 @@
|
|
1
|
-
|
1
|
+
# Rewire key commands to container
|
2
|
+
%i(bundle rake).map do |command|
|
3
|
+
# FIXME: replace hard-coded web service with master service setting
|
4
|
+
# https://github.com/interactive-pioneers/capistrano-docker-compose/issues/7
|
5
|
+
SSHKit.config.command_map.prefix[command].push("docker-compose exec web")
|
6
|
+
end
|
2
7
|
|
3
8
|
namespace :deploy do
|
4
9
|
|
5
10
|
set :previous_release_path, nil
|
11
|
+
set :docker_compose_roles, :all
|
6
12
|
|
7
13
|
task :pull_images do
|
8
|
-
on roles(:
|
14
|
+
on roles(fetch(:docker_compose_roles)) do
|
9
15
|
within release_path do
|
10
16
|
execute :'docker-compose', 'pull'
|
11
17
|
# TODO: confirm successful pull
|
@@ -14,7 +20,7 @@ namespace :deploy do
|
|
14
20
|
end
|
15
21
|
|
16
22
|
task :start_containers do
|
17
|
-
on roles(:
|
23
|
+
on roles(fetch(:docker_compose_roles)) do
|
18
24
|
set :previous_release_path, previous_release
|
19
25
|
within release_path do
|
20
26
|
with cap_docker_compose_root_path: fetch(:deploy_to), cap_docker_compose_port: detect_available_port do
|
@@ -27,7 +33,7 @@ namespace :deploy do
|
|
27
33
|
task :claim_files_by_container do
|
28
34
|
user = fetch(:docker_compose_user)
|
29
35
|
unless user.nil?
|
30
|
-
on roles(:
|
36
|
+
on roles(fetch(:docker_compose_roles)) do
|
31
37
|
within release_path do
|
32
38
|
execute :'docker-compose', 'exec', 'web', 'chown', '-R', "#{user}:#{user}", '.'
|
33
39
|
end
|
@@ -36,7 +42,7 @@ namespace :deploy do
|
|
36
42
|
end
|
37
43
|
|
38
44
|
task :purge_old_containers do
|
39
|
-
on roles(:
|
45
|
+
on roles(fetch(:docker_compose_roles)) do
|
40
46
|
if fetch(:previous_release_path)
|
41
47
|
info "Purging previous release containers at #{fetch(:previous_release_path)}"
|
42
48
|
within fetch(:previous_release_path) do
|
@@ -47,7 +53,7 @@ namespace :deploy do
|
|
47
53
|
end
|
48
54
|
|
49
55
|
task :purge_failed_containers do
|
50
|
-
on roles(:
|
56
|
+
on roles(fetch(:docker_compose_roles)) do
|
51
57
|
within release_path do
|
52
58
|
execute :'docker-compose', 'down'
|
53
59
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-docker-compose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ain Tohvri
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -82,6 +82,7 @@ files:
|
|
82
82
|
- README.md
|
83
83
|
- Rakefile
|
84
84
|
- capistrano-docker-compose.gemspec
|
85
|
+
- docker-compose-staging.example.yml
|
85
86
|
- haproxy.example.cfg
|
86
87
|
- lib/capistrano-docker-compose.rb
|
87
88
|
- lib/capistrano/docker.rb
|