lux 0.5 → 0.6
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 +67 -0
- data/Rakefile.test +33 -0
- data/lib/lux/dockertasks.rb +64 -0
- data/lib/lux/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6288ab37dee1e32be74b9ae50a4e90857ee1f175
|
4
|
+
data.tar.gz: 004c036416714fa00796143a43338b00e307f1dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f7504d919e5dac6496d00ab30c625858f7d79d0d7c063396fb5b6a9dcc2fc56a5e1905b6f38b0a3fa4e57bfa1a2810458488bcb949fa9c59d5853fb881e378b
|
7
|
+
data.tar.gz: 8d1ebc2248e1dc3acdb87344a5a8b0308b7d8f55e14f6ca5b802b27c2a59862f2c03021e04a118a787a8e724a94f7d3f6a10b180d1b951e7b826767cafe330dc
|
data/README.md
CHANGED
@@ -27,8 +27,75 @@ Or install it yourself as:
|
|
27
27
|
|
28
28
|
## Usage
|
29
29
|
|
30
|
+
### Command Line Tool
|
31
|
+
|
32
|
+
The `lux` command simplifies a number of Docker command line operations and provides
|
33
|
+
unix-style commands for listing and removing images, as well as rake-like tasks for
|
34
|
+
cleaning, tidying and clobbering containers and their images.
|
35
|
+
|
30
36
|
Type: `lux help` to get started
|
31
37
|
|
38
|
+
### Rake Tasks
|
39
|
+
|
40
|
+
When trying to write Rakefiles that start Docker containers it is useful to have a Rake
|
41
|
+
task that represents a container image. Then you can make other tasks depend on them.
|
42
|
+
If the task (when invoked) checks the local Docker server for the image, and
|
43
|
+
only executes the task body if the image is not found, then you can build Docker
|
44
|
+
dependencies elegantly into the Rakefile.
|
45
|
+
|
46
|
+
The boilerplate to do this is included in Lux as a Rake Task Generator. Here are some
|
47
|
+
examples:
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
require 'lux/dockertasks'
|
51
|
+
|
52
|
+
# Define a simple task.
|
53
|
+
# The tag will default to 'latest' and the name of the task is 'busybox'
|
54
|
+
|
55
|
+
DockerImageTask.new('busybox')
|
56
|
+
|
57
|
+
# Define a task with a tag.
|
58
|
+
# The name of the task is 'ubuntu', the tag is 'trusty'
|
59
|
+
|
60
|
+
DockerImageTask.new('ubuntu:trusty')
|
61
|
+
|
62
|
+
# Define a task with a tag and a name.
|
63
|
+
# The name of the task is 'reedy', the image is 'ubuntu' and the tag 'reedy'
|
64
|
+
|
65
|
+
DockerImageTask.new('ubuntu:reedy', :reedy)
|
66
|
+
|
67
|
+
# Define a task with a fully qualified image and a block.
|
68
|
+
# The block will be executed if the image is not found locally.
|
69
|
+
# The task object yielded has the image and tag attributes
|
70
|
+
# as well as the usual name and description.
|
71
|
+
|
72
|
+
DockerImageTask.new('quay.io/rasputin/tools:1.0') do |t|
|
73
|
+
puts "You want me to build the image #{t.image}:#{t.tag}?"
|
74
|
+
fail "Not from here I can't..."
|
75
|
+
end
|
76
|
+
|
77
|
+
desc "Run Busybox"
|
78
|
+
task :runb => 'busybox' do
|
79
|
+
sh "docker run -it busybox"
|
80
|
+
end
|
81
|
+
|
82
|
+
desc "Run Ubuntu Trusty"
|
83
|
+
task :runu => :ubuntu do
|
84
|
+
sh "docker run -it ubuntu:trusty /bin/bash"
|
85
|
+
end
|
86
|
+
|
87
|
+
desc "Run Ubuntu Reedy"
|
88
|
+
task :runr => :reedy do
|
89
|
+
sh "docker run -it ubuntu:reedy /bin/bash"
|
90
|
+
end
|
91
|
+
|
92
|
+
# Note how the task name does not include the tag
|
93
|
+
desc "Run Tools"
|
94
|
+
task :runt => 'quay.io/rasputin/tools' do
|
95
|
+
sh "docker run -it quay.io/turnitin/seu-tools:1.0 /bin/bash"
|
96
|
+
end
|
97
|
+
```
|
98
|
+
|
32
99
|
## Development
|
33
100
|
|
34
101
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
data/Rakefile.test
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
|
3
|
+
require_relative 'lib/lux/dockertasks.rb'
|
4
|
+
|
5
|
+
DockerImageTask.new('busybox')
|
6
|
+
DockerImageTask.new('ubuntu:trusty')
|
7
|
+
DockerImageTask.new('ubuntu:reedy', :reedy)
|
8
|
+
DockerImageTask.new('quay.io/turnitin/seu-tools:1.0') do |t|
|
9
|
+
puts "You want me to build the image #{t.image}:#{t.tag}?"
|
10
|
+
fail "Not from here I can't..."
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Run Busybox"
|
14
|
+
task :runb => 'busybox' do
|
15
|
+
sh "docker run -it busybox"
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Run Ubuntu Trusty"
|
19
|
+
task :runu => :ubuntu do
|
20
|
+
sh "docker run -it ubuntu:trusty /bin/bash"
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Run Ubuntu Reedy"
|
24
|
+
task :runr => :reedy do
|
25
|
+
sh "docker run -it ubuntu:reedy /bin/bash"
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "Run Tools"
|
29
|
+
task :runt => 'quay.io/turnitin/seu-tools' do
|
30
|
+
sh "docker run -it quay.io/turnitin/seu-tools /bin/bash"
|
31
|
+
end
|
32
|
+
|
33
|
+
task :default => %w{ runb runu runt runr }
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'highline/import'
|
2
|
+
require 'rake/tasklib'
|
3
|
+
|
4
|
+
# A Task Generator for Docker images
|
5
|
+
#
|
6
|
+
# Example:
|
7
|
+
# require "lux/dockertasks"
|
8
|
+
#
|
9
|
+
# DockerImageTask.new('myimage') do
|
10
|
+
# puts "Here you can build the image"
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# task :run => 'myimage' do
|
14
|
+
# sh "docker run myimage"
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
class DockerImageTask < Rake::TaskLib
|
18
|
+
|
19
|
+
# The name of the task (defaults to the image)
|
20
|
+
attr_accessor :name
|
21
|
+
|
22
|
+
# The name of the image (if different to the task name)
|
23
|
+
attr_accessor :image
|
24
|
+
|
25
|
+
# Name of tag (default is latest)
|
26
|
+
attr_accessor :tag
|
27
|
+
|
28
|
+
# Task Description (default is 'Build Docker Image <imagename>')
|
29
|
+
attr_accessor :description
|
30
|
+
|
31
|
+
# The block to execute if this needs building
|
32
|
+
attr_accessor :build
|
33
|
+
|
34
|
+
# The image may include a tag, but the tag is never part of the name
|
35
|
+
# If the tag is omitted it defaults to 'latest'
|
36
|
+
# If a name is specified it becomes the task name.
|
37
|
+
#
|
38
|
+
def initialize(image, name=nil, &block)
|
39
|
+
@image, sep, @tag = image.partition(':')
|
40
|
+
@tag = 'latest' if @tag.empty?
|
41
|
+
@name = name || @image
|
42
|
+
@description = "Build Docker Image #{@image}:#{@tag}"
|
43
|
+
@build = block
|
44
|
+
define
|
45
|
+
end
|
46
|
+
|
47
|
+
def define
|
48
|
+
desc @description
|
49
|
+
task @name do
|
50
|
+
local_images = `docker images #{@image}`.split("\n")[1..-1].map{|l| l.split(/\s+/)}
|
51
|
+
local_images.select!{|i| i[1] == @tag}
|
52
|
+
if local_images.size == 0
|
53
|
+
if @build.nil?
|
54
|
+
HighLine.say "Build Docker Image <%=BOLD%>#{@image}:#{@tag}<%=CLEAR%> before proceeding"
|
55
|
+
exit 2
|
56
|
+
else
|
57
|
+
@build.call self
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
self
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
data/lib/lux/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.6'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Townsend
|
@@ -81,8 +81,10 @@ files:
|
|
81
81
|
- LICENSE.txt
|
82
82
|
- README.md
|
83
83
|
- Rakefile
|
84
|
+
- Rakefile.test
|
84
85
|
- bin/lux
|
85
86
|
- lib/lux.rb
|
87
|
+
- lib/lux/dockertasks.rb
|
86
88
|
- lib/lux/version.rb
|
87
89
|
- lux.gemspec
|
88
90
|
homepage: https://github.com/townsen/lux
|