docker-compose 0.3.1 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 03253ecae7a727eaba835a5042ec07bd4af06aee
4
- data.tar.gz: f82b24d7ade2a1621eab41bb8dc8da1188b7afef
3
+ metadata.gz: fb2ef064c4d01432c98af7db3070fe1c95a3b5aa
4
+ data.tar.gz: a97e18e24ae122cb9cd2f26b6e5cfd049a9d6b7f
5
5
  SHA512:
6
- metadata.gz: 49ae1c849beb8c5b9623faea4fd73057be4660979f1ea570e4ce013deb4d4e6807498090ae741859a530036ce420b068a587153514aa7b77b9c41072e7d72f59
7
- data.tar.gz: 3350c7abbd3ae4fcefba35661b82abc314de369f8b7105b0430c10fd7b7031efc9e10e550d47da23898250fc00d76c9bb715d224fe8ebcf0cfbace0623f00d54
6
+ metadata.gz: 313cad2a5fb2ceea44f02d24742368387e02e001a5b6005e0ee537675dd5408bb63c2a2a1e43c30f3f3eeeceacb4a4cf8a5afacc989b41f70b36eae5e3953c21
7
+ data.tar.gz: 5612260908f7a23b17fb90433d76eff56384242cde969a1d58ac8b2aa1b27c954d6815c846fc1be66e921927b9596ac9dd89edf90b41aaa92d5408e22bb5d680
data/README.md CHANGED
@@ -4,7 +4,7 @@ This is a Ruby OOP wrapper for the [docker-compose](https://github.com/docker/co
4
4
  container orchestration tool from Docker Inc.
5
5
 
6
6
  In addition to wrapping the CLI, this gem provides an environment-variable mapping
7
- featurie that allows you to export environment variables into your _host_ that point
7
+ feature that allows you to export environment variables into your _host_ that point
8
8
  to network services exposed by containers. This allows you to run an application on
9
9
  your host for quicker and easier development, but run all of its architectural
10
10
  dependencies -- database, cache, adjacent microservices -- in containers. The
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency "backticks", "~> 0.1"
22
+ spec.add_dependency "backticks", "~> 0.3"
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.10"
25
25
  spec.add_development_dependency "rake", "~> 10.0"
@@ -43,6 +43,9 @@ module Docker::Compose
43
43
  # depends on them and is properly linked to them.
44
44
  attr_accessor :server
45
45
 
46
+ # Namespace to define the rake tasks under. Defaults to "docker:compose'.
47
+ attr_accessor :rake_namespace
48
+
46
49
  # Construct Rake wrapper tasks for docker-compose. If a block is given,
47
50
  # yield self to the block before defining any tasks so their behavior
48
51
  # can be configured by calling #server_env=, #file= and so forth.
@@ -51,6 +54,7 @@ module Docker::Compose
51
54
  self.file = 'docker-compose.yml'
52
55
  self.server_env = {}
53
56
  self.extra_server_env = {}
57
+ self.rake_namespace = 'docker:compose'
54
58
  yield self if block_given?
55
59
 
56
60
  @shell = Backticks::Runner.new
@@ -63,48 +67,46 @@ module Docker::Compose
63
67
  end
64
68
 
65
69
  private def define
66
- namespace :docker do
67
- namespace :compose do
68
- desc 'Print bash exports with IP/ports of running services'
69
- task :env do
70
- @shell.interactive = false # suppress useless 'port' output
71
-
72
- if Rake.application.top_level_tasks.include? 'docker:compose:env'
73
- # This task is being run as top-level task; set process
74
- # environment _and_ print bash export commands to stdout.
75
- # Also print usage hints if user invoked rake directly vs.
76
- # eval'ing it's output
77
- print_usage
78
- export_env(print:true)
79
- else
80
- # This task is a dependency of something else; just export the
81
- # environment variables for use in-process by other Rake tasks.
82
- export_env(print:false)
83
- end
84
-
85
- @shell.interactive = true
70
+ namespace self.rake_namespace do
71
+ desc 'Print bash exports with IP/ports of running services'
72
+ task :env do
73
+ @shell.interactive = false # suppress useless 'port' output
74
+
75
+ if Rake.application.top_level_tasks.include? 'docker:compose:env'
76
+ # This task is being run as top-level task; set process
77
+ # environment _and_ print bash export commands to stdout.
78
+ # Also print usage hints if user invoked rake directly vs.
79
+ # eval'ing it's output
80
+ print_usage
81
+ export_env(print:true)
82
+ else
83
+ # This task is a dependency of something else; just export the
84
+ # environment variables for use in-process by other Rake tasks.
85
+ export_env(print:false)
86
86
  end
87
87
 
88
- desc 'Launch services (ONLY=a,b,...)'
89
- task :up do
90
- only = (ENV['ONLY'] || '').split(',').compact.uniq
91
- @session.up(*only, detached:true)
92
- end
88
+ @shell.interactive = true
89
+ end
93
90
 
94
- desc 'Tail logs of all running services'
95
- task :logs do
96
- @session.logs
97
- end
91
+ desc 'Launch services (ONLY=a,b,...)'
92
+ task :up do
93
+ only = (ENV['ONLY'] || '').split(',').compact.uniq
94
+ @session.up(*only, detached:true)
95
+ end
98
96
 
99
- desc 'Stop services'
100
- task :stop do
101
- @session.stop
102
- end
97
+ desc 'Tail logs of all running services'
98
+ task :logs do
99
+ @session.logs
100
+ end
103
101
 
104
- desc 'Run application on the host, linked to services in containers'
105
- task :server => ['docker:compose:up', 'docker:compose:env'] do
106
- exec(self.server)
107
- end
102
+ desc 'Stop services'
103
+ task :stop do
104
+ @session.stop
105
+ end
106
+
107
+ desc 'Run application on the host, linked to services in containers'
108
+ task :server => ['docker:compose:up', 'docker:compose:env'] do
109
+ exec(self.server)
108
110
  end
109
111
  end
110
112
  end
@@ -15,7 +15,7 @@ module Docker::Compose
15
15
  class Session
16
16
  attr_reader :dir, :file
17
17
 
18
- def initialize(shell=Backticks::Runner.new,
18
+ def initialize(shell=Backticks::Runner.new(interactive:true),
19
19
  dir:Dir.pwd, file:'docker-compose.yml')
20
20
  @shell = shell
21
21
  @dir = dir
@@ -25,7 +25,7 @@ module Docker::Compose
25
25
  # Monitor the logs of one or more containers.
26
26
  # @param [Array] services list of String service names to show logs for
27
27
  # @return [true] always returns true
28
- # @raise [RuntimeError] if command fails
28
+ # @raise [Error] if command fails
29
29
  def logs(*services)
30
30
  run!('logs', services)
31
31
  true
@@ -41,7 +41,7 @@ module Docker::Compose
41
41
  # @param [Boolean] no_deps if true, just run specified services without
42
42
  # running the services that they depend on
43
43
  # @return [true] always returns true
44
- # @raise [RuntimeError] if command fails
44
+ # @raise [Error] if command fails
45
45
  def up(*services,
46
46
  detached:false, timeout:10, no_build:false, no_deps:false)
47
47
  run!('up',
@@ -53,6 +53,7 @@ module Docker::Compose
53
53
  # Stop running services.
54
54
  # @param [Array] services list of String service names to stop
55
55
  # @param [Integer] timeout how long to wait for each service to stop
56
+ # @raise [Error] if command fails
56
57
  def stop(*services, timeout:10)
57
58
  run!('stop', {timeout:timeout}, services)
58
59
  end
@@ -62,6 +63,7 @@ module Docker::Compose
62
63
  # @param [Integer] port number of port
63
64
  # @param [String] protocol 'tcp' or 'udp'
64
65
  # @param [Integer] index of container (if multiple instances running)
66
+ # @raise [Error] if command fails
65
67
  def port(service, port, protocol:'tcp', index:1)
66
68
  run!('port', {protocol:protocol, index:index}, service, port)
67
69
  end
@@ -69,15 +71,15 @@ module Docker::Compose
69
71
  # Determine the installed version of docker-compose.
70
72
  # @param [Boolean] short whether to return terse version information
71
73
  # @return [String, Hash] if short==true, returns a version string;
72
- # otherwise, returns a Hash of component names to version strings
73
- # @raise [RuntimeError] if command fails
74
+ # otherwise, returns a Hash of component-name strings to version strings
75
+ # @raise [Error] if command fails
74
76
  def version(short:false)
75
77
  result = run!('version', short:short, file:false, dir:false)
76
78
 
77
79
  if short
78
80
  result.strip
79
81
  else
80
- lines = result.split("\n")
82
+ lines = result.split(/[\r\n]+/)
81
83
  lines.inject({}) do |h, line|
82
84
  kv = line.split(/: +/, 2)
83
85
  h[kv.first] = kv.last
@@ -94,7 +96,7 @@ module Docker::Compose
94
96
  # @param [Array] args command-line arguments in the format accepted by
95
97
  # Backticks::Runner#command
96
98
  # @return [String] output of the command
97
- # @raise [RuntimeError] if command fails
99
+ # @raise [Error] if command fails
98
100
  def run!(*args)
99
101
  project_opts = {
100
102
  file: @file
@@ -102,7 +104,7 @@ module Docker::Compose
102
104
 
103
105
  Dir.chdir(@dir) do
104
106
  cmd = @shell.command('docker-compose', project_opts, *args).join
105
- status, out, err= cmd.status, cmd.captured_output, cmd.captured_error
107
+ status, out, err = cmd.status, cmd.captured_output, cmd.captured_error
106
108
  status.success? || raise(Error.new(args.first, status, err))
107
109
  out
108
110
  end
@@ -1,5 +1,5 @@
1
1
  module Docker
2
2
  module Compose
3
- VERSION = "0.3.1"
3
+ VERSION = "0.4.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker-compose
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Spataro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-24 00:00:00.000000000 Z
11
+ date: 2016-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backticks
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.1'
19
+ version: '0.3'
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: '0.1'
26
+ version: '0.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement