docker-shaball 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 817611bc9747f865a69fbc22223f9e13e23a4610
4
+ data.tar.gz: ec21c7c41e8d09f4542935af256edda0c409ae65
5
+ SHA512:
6
+ metadata.gz: fb41f0da700abc36f78640936ab89f6a3cede281236921893ed0798087ea0c3b659ea01ad7c039657ac9783280b84d0ad74febc14fe4b226f94bd7dd5762f6d5
7
+ data.tar.gz: 89b08918652b51a2f5ef5b2a5148bc044a079c10de7ace5b524236bc48be943db930a0d694b5db72478239c5ad98a2096b48f00b66ad0142014db06cff940d89
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
15
+ *.tar.gz
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in docker-shaball.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # docker-shaball
2
+
3
+ This little script helps you bundle up a bunch of Docker images for
4
+ distribution e.g. to S3.
5
+
6
+ Sample usage:
7
+
8
+ ```shell
9
+ $ docker-shaball nginx:1.9 ruby:2.2
10
+ f5fe78d69d93b719109341295a024b62c84ebc28.tar.gz
11
+ ```
12
+
13
+ The named images are exported from your local Docker daemon using `docker save`, and saved as a `CHECKSUM.tar.gz` archive. The archive file-name includes a checksum of a "manifest" formed using the named Docker images and the corresponding IDs. Specify the `--manifest` flag to see the manifest:
14
+
15
+ ```shell
16
+ $ docker-shaball --manifest nginx:1.9 ruby:2.2
17
+ nginx:1.9 72d73c46937aaf8ca1efe566cac0564a05a0f1aeaef770658c8201726cfff50b
18
+ ruby:2.2 9372b27f3abf65e96955894809adf406afad67f1208eaa7600b9bf2898c09c51
19
+ ```
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,55 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require "clamp"
4
+ require "digest/sha1"
5
+
6
+ Clamp do
7
+
8
+ self.description = "Bundle docker images into a tar-ball, with a unique name based on content"
9
+
10
+ option "--pull", :flag, "pull the named images first"
11
+
12
+ option "--manifest", :flag, "just print the image manifest"
13
+
14
+ parameter "IMAGE ...", "image name"
15
+
16
+ def execute
17
+ if pull?
18
+ image_names.each do |name|
19
+ system("docker pull #{name}")
20
+ signal_error("docker pull failed") unless $?.success?
21
+ end
22
+ end
23
+ if manifest?
24
+ puts image_manifest
25
+ return
26
+ end
27
+ manifest_checksum = Digest::SHA1.hexdigest(image_manifest)
28
+ output_file_name = "#{manifest_checksum}.tar.gz"
29
+ system("set -o pipefail; docker save #{image_names.join(' ')} | gzip > #{output_file_name}")
30
+ if $?.success?
31
+ puts output_file_name
32
+ else
33
+ signal_error("docker save failed")
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def image_names
40
+ image_list.map do |name|
41
+ name += ":latest" unless name.index(":")
42
+ name
43
+ end.uniq.sort
44
+ end
45
+
46
+ def image_manifest
47
+ inspect_output = `docker inspect -f '{{ .Config.Image }}' #{image_names.join(' ')}`
48
+ signal_error("docker inspect returned error") unless $?.success?
49
+ image_ids = inspect_output.lines.map(&:strip)
50
+ image_names.zip(image_ids).map do |image_name_and_id|
51
+ image_name_and_id.join(" ") + "\n"
52
+ end.join
53
+ end
54
+
55
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ Gem::Specification.new do |spec|
6
+
7
+ spec.name = "docker-shaball"
8
+ spec.version = "0.1.0"
9
+ spec.authors = ["Mike Williams", "Luke Carter-Key"]
10
+ spec.email = ["mdub@dogbiscuit.org", "luke.carterkey@gmail.com"]
11
+ spec.summary = %q{Create a tar-ball containing some Docker images}
12
+ spec.homepage = "https://github.com/mdub/docker-shaball"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+
18
+ spec.add_runtime_dependency "clamp", "~> 0.6.4"
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.10"
21
+ spec.add_development_dependency "rake", "~> 10.4"
22
+
23
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: docker-shaball
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Mike Williams
8
+ - Luke Carter-Key
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-06-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: clamp
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.6.4
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.6.4
28
+ - !ruby/object:Gem::Dependency
29
+ name: bundler
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.10'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.10'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '10.4'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '10.4'
56
+ description:
57
+ email:
58
+ - mdub@dogbiscuit.org
59
+ - luke.carterkey@gmail.com
60
+ executables:
61
+ - docker-shaball
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - ".gitignore"
66
+ - Gemfile
67
+ - README.md
68
+ - Rakefile
69
+ - bin/docker-shaball
70
+ - docker-shaball.gemspec
71
+ homepage: https://github.com/mdub/docker-shaball
72
+ licenses:
73
+ - MIT
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 2.4.5
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: Create a tar-ball containing some Docker images
95
+ test_files: []