Skip to content
This repository was archived by the owner on Mar 27, 2018. It is now read-only.

Commit 372cac2

Browse files
committed
added support for dockito vault container, added rm_exited helper
1 parent a4fddcb commit 372cac2

File tree

2 files changed

+58
-5
lines changed

2 files changed

+58
-5
lines changed

lib/docker/rails/app.rb

+44-3
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,39 @@ def configure(options)
3737
@is_configured = true
3838
end
3939

40+
# Create a dockito vault container for serving private keys
41+
# https://github.com/dockito/vault
42+
def create_dockito_vault
43+
begin
44+
Docker::Container.get(dockito_vault_name)
45+
puts "Dockito vault container #{dockito_vault_name} already exists."
46+
rescue Docker::Error::NotFoundError => e
47+
48+
# docker run --detach --name vault -p 14242:3000 -v ~/.ssh:/vault/.ssh dockito/vault:latest
49+
exec "docker run --detach --name #{dockito_vault_name} -p 14242:3000 -v ~/.ssh:/vault/.ssh dockito/vault:latest"
50+
puts "Dockito vault container #{dockito_vault_name} created."
51+
end
52+
end
53+
54+
def rm_dockito_vault
55+
begin
56+
container = Docker::Container.get(dockito_vault_name)
57+
rm_v(container)
58+
rescue Docker::Error::NotFoundError => e
59+
puts "Dockito vault container #{dockito_vault_name} does not exist."
60+
end
61+
end
62+
63+
# FIXME this needs to by dynamic to this run?
64+
def dockito_vault_name
65+
'vault' #@config[:dockito][:vault][:name]
66+
end
67+
68+
def dockito_vault_enabled?
69+
@config[:dockito][:vault] || false
70+
end
71+
72+
4073
def compose
4174
# Write a docker-compose.yml with interpolated variables
4275
@compose_filename = compose_filename_from project_name
@@ -196,6 +229,14 @@ def rm_dangling
196229
puts 'Done.'
197230
end
198231

232+
def rm_exited
233+
puts "\n\nCleaning up exited containers..."
234+
puts '-----------------------------'
235+
236+
exec('docker rm -v $(docker ps -a -q -f status=exited)', false, true)
237+
puts 'Done.'
238+
end
239+
199240
def run_service_command(service_name, command)
200241
# Run the compose configuration
201242
exec_compose("run #{service_name} #{command}", false, '', true)
@@ -227,7 +268,7 @@ def exec(cmd, capture = false, ignore_errors = false)
227268
output
228269
end
229270

230-
# convenience to execute docker-compose with file and project params
271+
# convenience to execute docker-compose with file and project params
231272
def exec_compose(cmd, capture = false, options = '', ignore_errors = false)
232273
# in the case of running a bash session, this file may dissappear, just make sure it is there.
233274
compose unless File.exists?(@compose_filename)
@@ -259,7 +300,7 @@ def verbose?
259300
@verbose ||= (@config['verbose'] unless @config.nil?) || false
260301
end
261302

262-
# accessible so that we can delete patterns
303+
# accessible so that we can delete patterns
263304
def compose_filename_from(project_name)
264305
"docker-compose-#{project_name}.yml"
265306
end
@@ -306,7 +347,7 @@ def stop(container)
306347
kill(container)
307348
end
308349

309-
# kill container, progressively more forceful from -1, -9, then full Chuck Norris.
350+
# kill container, progressively more forceful from -1, -9, then full Chuck Norris.
310351
def kill(container)
311352
%w(SIGHUP SIGKILL SIGSTOP).each do |signal|
312353
if container.up?

lib/docker/rails/cli/main.rb

+14-2
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,14 @@ def up(target)
7676

7777
def build(target)
7878
invoke :compose
79-
app = App.configured(target, options).compose_build
80-
app.after_build_command
79+
app = App.configured(target, options)
80+
app.create_dockito_vault
81+
begin
82+
app.compose_build
83+
ensure
84+
app.rm_dockito_vault
85+
app.after_build_command
86+
end
8187
end
8288

8389
desc 'compose <target>', 'Writes a resolved docker-compose.yml file e.g. docker-rails compose --build=222 test'
@@ -120,6 +126,12 @@ def rm_dangling(build = nil, target = nil)
120126
App.instance.rm_dangling
121127
end
122128

129+
desc 'rm_exited', 'Remove exited containers e.g. docker-rails rm_exited'
130+
131+
def rm_exited(build = nil, target = nil)
132+
App.instance.rm_exited
133+
end
134+
123135
desc 'ps <target>', 'List containers for the target compose configuration e.g. docker-rails ps --build=222 development'
124136

125137
def ps(target)

0 commit comments

Comments
 (0)