docker-compose 0.8.4 → 1.0.0rc1
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/Gemfile +2 -0
- data/docker-compose.gemspec +1 -1
- data/lib/docker/compose/session.rb +53 -39
- data/lib/docker/compose/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 365d253ec8bea621b383762ab6d130991374aaef
|
4
|
+
data.tar.gz: 678be8f50dd021feffbf00e4c67eb0da5985321f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42fe1651bc466fdcf4df95098ccc566b613d485f79b056f41eb3bc9a68c90cb1d5642bee1227e4ee7f4361106f7fef8071a7eacfe6994d5a93b25a3b5ed2c902
|
7
|
+
data.tar.gz: b096804ff73321e4efad1b29725feb4d2388068106f6f0a7d751c9e23236f4f8c6c06e32143c09959ef97cdc78b82ca9148c2ef8fe9bb35c1b35c86a75fdb42c
|
data/Gemfile
CHANGED
data/docker-compose.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
|
22
22
|
spec.required_ruby_version = Gem::Requirement.new("~> 2.0")
|
23
23
|
|
24
|
-
spec.add_dependency 'backticks', '
|
24
|
+
spec.add_dependency 'backticks', '>= 1.0.0rc1'
|
25
25
|
|
26
26
|
spec.add_development_dependency 'bundler', '~> 1.10'
|
27
27
|
spec.add_development_dependency 'rake', '~> 10.0'
|
@@ -17,8 +17,8 @@ module Docker::Compose
|
|
17
17
|
class Session
|
18
18
|
attr_reader :dir, :file
|
19
19
|
|
20
|
-
def initialize(shell = Backticks::Runner.new(buffered:[:stderr], interactive: true),
|
21
|
-
dir:Dir.pwd, file:'docker-compose.yml')
|
20
|
+
def initialize(shell = Backticks::Runner.new(buffered: [:stderr], interactive: true),
|
21
|
+
dir: Dir.pwd, file: 'docker-compose.yml')
|
22
22
|
@shell = shell
|
23
23
|
@dir = dir
|
24
24
|
@file = file
|
@@ -45,7 +45,7 @@ module Docker::Compose
|
|
45
45
|
inter = @shell.interactive
|
46
46
|
@shell.interactive = false
|
47
47
|
|
48
|
-
lines = run!('ps', q:true).split(/[\r\n]+/)
|
48
|
+
lines = run!('ps', q: true).split(/[\r\n]+/)
|
49
49
|
containers = Collection.new
|
50
50
|
|
51
51
|
lines.each do |id|
|
@@ -69,10 +69,12 @@ module Docker::Compose
|
|
69
69
|
# @return [true] always returns true
|
70
70
|
# @raise [Error] if command fails
|
71
71
|
def up(*services,
|
72
|
-
detached:false, timeout:10, no_build:false, no_deps:false)
|
73
|
-
|
74
|
-
|
75
|
-
|
72
|
+
detached: false, timeout: 10, no_build: false, no_deps: false)
|
73
|
+
o = opts(d: [detached, false],
|
74
|
+
timeout: [timeout, 10],
|
75
|
+
no_build: [no_build, false],
|
76
|
+
no_deps: [no_deps, false])
|
77
|
+
run!('up', o, services)
|
76
78
|
true
|
77
79
|
end
|
78
80
|
|
@@ -87,8 +89,9 @@ module Docker::Compose
|
|
87
89
|
run!('pull', *services)
|
88
90
|
end
|
89
91
|
|
90
|
-
def rm(*services, force:false, volumes:false)
|
91
|
-
|
92
|
+
def rm(*services, force: false, volumes: false)
|
93
|
+
o = opts(f: [force, false], v: [volumes, false])
|
94
|
+
run!('rm', o, services)
|
92
95
|
end
|
93
96
|
|
94
97
|
# Idempotently run an arbitrary command with a service container.
|
@@ -99,18 +102,12 @@ module Docker::Compose
|
|
99
102
|
# @param [Boolean] no_deps if true, just run specified services without
|
100
103
|
# running the services that they depend on
|
101
104
|
# @param [Array] env a list of environment variables (see: -e flag)
|
102
|
-
# @param [Array] env_vars DEPRECATED alias for env kwarg
|
103
105
|
# @param [Boolean] rm remove the container when done
|
104
106
|
# @raise [Error] if command fails
|
105
|
-
def run(service, *cmd, detached:false, no_deps:false, env:[],
|
106
|
-
|
107
|
-
if (env.nil? || env.empty?) && !env_vars.nil?
|
108
|
-
env = env_vars
|
109
|
-
end
|
110
|
-
|
107
|
+
def run(service, *cmd, detached: false, no_deps: false, env: [], rm: false)
|
108
|
+
o = opts(detached: [detached, false], no_deps: [no_deps, false], env: [env, []], rm: [rm, false])
|
111
109
|
env_params = env.map { |v| { e: v } }
|
112
|
-
run!('run',
|
113
|
-
{ d: detached, no_deps: no_deps, rm: rm }, *env_params, service, cmd)
|
110
|
+
run!('run', o, *env_params, service, cmd)
|
114
111
|
end
|
115
112
|
|
116
113
|
# Pause running services.
|
@@ -129,16 +126,18 @@ module Docker::Compose
|
|
129
126
|
# @param [Array] services list of String service names to stop
|
130
127
|
# @param [Integer] timeout how long to wait for each service to stop
|
131
128
|
# @raise [Error] if command fails
|
132
|
-
def stop(*services, timeout:10)
|
133
|
-
|
129
|
+
def stop(*services, timeout: 10)
|
130
|
+
o = opts(timeout: [timeout, 10])
|
131
|
+
run!('stop', o, services)
|
134
132
|
end
|
135
133
|
|
136
134
|
# Forcibly stop running services.
|
137
135
|
# @param [Array] services list of String service names to stop
|
138
136
|
# @param [String] name of murderous signal to use, default is 'KILL'
|
139
137
|
# @see Signal.list for a list of acceptable signal names
|
140
|
-
def kill(*services, signal:'KILL')
|
141
|
-
|
138
|
+
def kill(*services, signal: 'KILL')
|
139
|
+
o = opts(signal: [signal, 'KILL'])
|
140
|
+
run!('kill', o, services)
|
142
141
|
end
|
143
142
|
|
144
143
|
# Figure out which host a port a given service port has been published to.
|
@@ -147,8 +146,9 @@ module Docker::Compose
|
|
147
146
|
# @param [String] protocol 'tcp' or 'udp'
|
148
147
|
# @param [Integer] index of container (if multiple instances running)
|
149
148
|
# @raise [Error] if command fails
|
150
|
-
def port(service, port, protocol:'tcp', index:1)
|
151
|
-
|
149
|
+
def port(service, port, protocol: 'tcp', index: 1)
|
150
|
+
o = opts(protocol: [protocol, 'tcp'], index: [index, 1])
|
151
|
+
run!('port', o, service, port)
|
152
152
|
end
|
153
153
|
|
154
154
|
# Determine the installed version of docker-compose.
|
@@ -156,8 +156,9 @@ module Docker::Compose
|
|
156
156
|
# @return [String, Hash] if short==true, returns a version string;
|
157
157
|
# otherwise, returns a Hash of component-name strings to version strings
|
158
158
|
# @raise [Error] if command fails
|
159
|
-
def version(short:false)
|
160
|
-
|
159
|
+
def version(short: false)
|
160
|
+
o = opts(short: [short, false])
|
161
|
+
result = run!('version', o, file: false, dir: false)
|
161
162
|
|
162
163
|
if short
|
163
164
|
result.strip
|
@@ -171,9 +172,11 @@ module Docker::Compose
|
|
171
172
|
end
|
172
173
|
end
|
173
174
|
|
174
|
-
def
|
175
|
-
|
176
|
-
|
175
|
+
def build(*services, force_rm: false, no_cache: false, pull: false)
|
176
|
+
o = opts(force_rm: [force_rm, false],
|
177
|
+
no_cache: [no_cache, false],
|
178
|
+
pull: [pull, false])
|
179
|
+
result = run!('build', services, o)
|
177
180
|
end
|
178
181
|
|
179
182
|
# Run a docker-compose command without validating that the CLI parameters
|
@@ -187,15 +190,15 @@ module Docker::Compose
|
|
187
190
|
# @raise [Error] if command fails
|
188
191
|
def run!(*args)
|
189
192
|
file_args = case @file
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
193
|
+
when 'docker-compose.yml'
|
194
|
+
[]
|
195
|
+
when Array
|
196
|
+
# backticks sugar can't handle array values; build a list of hashes
|
197
|
+
# IMPORTANT: preserve the order of the files so overrides work correctly
|
198
|
+
file_args = @file.map { |filepath| { :file => filepath } }
|
199
|
+
else
|
200
|
+
# a single String (or Pathname, etc); use normal sugar to add it
|
201
|
+
[{ file: @file.to_s }]
|
199
202
|
end
|
200
203
|
|
201
204
|
Dir.chdir(@dir) do
|
@@ -211,7 +214,7 @@ module Docker::Compose
|
|
211
214
|
private
|
212
215
|
|
213
216
|
def docker_ps(id)
|
214
|
-
cmd = @shell.run('docker', 'ps', a:true, f:"id=#{id}", format:Container::PS_FMT).join
|
217
|
+
cmd = @shell.run('docker', 'ps', a: true, f: "id=#{id}", format: Container::PS_FMT).join
|
215
218
|
status, out, err = cmd.status, cmd.captured_output, cmd.captured_error
|
216
219
|
raise Error.new('docker ps', status, "Unexpected output") unless status.success?
|
217
220
|
lines = out.split(/[\r\n]+/)
|
@@ -222,6 +225,17 @@ module Docker::Compose
|
|
222
225
|
return Container.new(*m)
|
223
226
|
end
|
224
227
|
|
228
|
+
# strip default-values options. the value of each kw should be a pair:
|
229
|
+
# [0] is present value
|
230
|
+
# [1] is default value
|
231
|
+
def opts(**kws)
|
232
|
+
res = {}
|
233
|
+
kws.each_pair do |kw, v|
|
234
|
+
res[kw] = v[0] unless v[0] == v[1]
|
235
|
+
end
|
236
|
+
res
|
237
|
+
end
|
238
|
+
|
225
239
|
# parse values enclosed within parentheses; values may contain nested
|
226
240
|
# matching pairs of parentheses
|
227
241
|
def parse(str)
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docker-compose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Spataro
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backticks
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.0.0rc1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.0.0rc1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -116,9 +116,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: '2.0'
|
117
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- - "
|
119
|
+
- - ">"
|
120
120
|
- !ruby/object:Gem::Version
|
121
|
-
version:
|
121
|
+
version: 1.3.1
|
122
122
|
requirements: []
|
123
123
|
rubyforge_project:
|
124
124
|
rubygems_version: 2.4.5
|