docker-builder 0.1.23 → 0.1.24
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/install_local.sh +1 -1
- data/lib/docker_builder.rb +1 -1
- data/lib/docker_builder/builder/packer.rb +102 -0
- data/lib/docker_builder/manager.rb +11 -0
- data/lib/docker_builder/version.rb +1 -1
- data/readme.md +33 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23bcf79f32645c64e052f96e3a743a7a656bea21
|
4
|
+
data.tar.gz: 4747e4c276d7145149992f09b0653fa13d8ce116
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 146476754d251afd605c5703ce701412fe8f427978fe19ab7569e0b6e4fabb6827451b3ba45e0ae95b2345471e01be938c4df40a624dfc3bd79a1235b1dc6356
|
7
|
+
data.tar.gz: 58613941f11efc95a40fa20e3c84e634db8972dc3dbfa139c7525a5da4d2b2abed2da42514ddd12d0cb896bbc9ee61d0c719d7fbb7f70911cd636e55a9bb86d2
|
data/install_local.sh
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
gem build docker-builder.gemspec
|
2
|
-
gem install ./docker-builder-0.1.
|
2
|
+
gem install ./docker-builder-0.1.24.gem
|
data/lib/docker_builder.rb
CHANGED
@@ -0,0 +1,102 @@
|
|
1
|
+
module DockerBuilder
|
2
|
+
module Builder
|
3
|
+
class Packer
|
4
|
+
|
5
|
+
attr_accessor :server
|
6
|
+
|
7
|
+
def server=(v)
|
8
|
+
@server = v
|
9
|
+
@server
|
10
|
+
end
|
11
|
+
|
12
|
+
def server
|
13
|
+
@server
|
14
|
+
end
|
15
|
+
|
16
|
+
def settings
|
17
|
+
server
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def initialize(_settings)
|
22
|
+
puts "init: #{_settings}"
|
23
|
+
self.server = _settings
|
24
|
+
|
25
|
+
#puts "set settings: #{server}"
|
26
|
+
#puts "set settings: #{server}"
|
27
|
+
end
|
28
|
+
|
29
|
+
def build
|
30
|
+
#puts "build with settings: #{server}"
|
31
|
+
|
32
|
+
# config json
|
33
|
+
save_packer_config
|
34
|
+
|
35
|
+
DockerBuilder::Command.cmd %Q(packer build #{filename_config} )
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
# helpers
|
40
|
+
def save_packer_config
|
41
|
+
require 'json'
|
42
|
+
filename = filename_config
|
43
|
+
FileUtils.mkdir_p(File.dirname(filename))
|
44
|
+
File.open(filename,"w+") do |f|
|
45
|
+
f.write(build_packer_config.to_json)
|
46
|
+
end
|
47
|
+
|
48
|
+
true
|
49
|
+
end
|
50
|
+
|
51
|
+
def filename_config
|
52
|
+
File.join(Config.root_path, 'temp', "packer-#{settings.name}.json")
|
53
|
+
end
|
54
|
+
|
55
|
+
def build_packer_config
|
56
|
+
|
57
|
+
res = {}
|
58
|
+
|
59
|
+
res['variables'] = {}
|
60
|
+
|
61
|
+
res['builders'] = []
|
62
|
+
|
63
|
+
bi = settings.attributes['build']['base_image']
|
64
|
+
base_image_name = "#{bi['name']}:#{bi['tag']}"
|
65
|
+
res['builders'] << {
|
66
|
+
pull: false,
|
67
|
+
type: "docker",
|
68
|
+
image: base_image_name,
|
69
|
+
commit: true
|
70
|
+
}
|
71
|
+
|
72
|
+
#
|
73
|
+
recipe_name = settings['build']['packer']['recipe_name'] || 'build'
|
74
|
+
cookbook_paths = settings['build']['packer']['cookbook_paths'] || []
|
75
|
+
cookbook_paths << settings.dir_cookbooks
|
76
|
+
|
77
|
+
res["provisioners"] = [
|
78
|
+
{
|
79
|
+
type: "chef-solo",
|
80
|
+
prevent_sudo: true,
|
81
|
+
cookbook_paths: cookbook_paths,
|
82
|
+
json: settings.attributes['attributes'],
|
83
|
+
run_list: ["recipe[#{settings.name}::#{recipe_name}]"]
|
84
|
+
},
|
85
|
+
]
|
86
|
+
|
87
|
+
# tag image
|
88
|
+
res["post-processors"] = [
|
89
|
+
{
|
90
|
+
repository: "#{settings.image_name}",
|
91
|
+
type: "docker-tag"
|
92
|
+
}
|
93
|
+
]
|
94
|
+
|
95
|
+
res
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
|
@@ -30,6 +30,8 @@ class Manager
|
|
30
30
|
return build_image_with_dockerfile(settings)
|
31
31
|
elsif t=='chef'
|
32
32
|
return build_image_with_chef(settings)
|
33
|
+
elsif t=='packer'
|
34
|
+
return build_image_with_packer(settings)
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
@@ -56,6 +58,15 @@ class Manager
|
|
56
58
|
end
|
57
59
|
|
58
60
|
|
61
|
+
def self.build_image_with_packer(settings)
|
62
|
+
require_relative '../../lib/docker_builder/builder/packer'
|
63
|
+
|
64
|
+
puts "build image with packer"
|
65
|
+
|
66
|
+
builder = DockerBuilder::Builder::Packer.new(settings)
|
67
|
+
builder.build
|
68
|
+
end
|
69
|
+
|
59
70
|
|
60
71
|
|
61
72
|
### run
|
data/readme.md
CHANGED
@@ -188,7 +188,7 @@ http://localhost:8080
|
|
188
188
|
|
189
189
|
# Basic usage
|
190
190
|
|
191
|
-
# Provision
|
191
|
+
# Provision with shell script
|
192
192
|
|
193
193
|
* put scripts in `/path/to/project/ <<server_name>> / scripts / install.sh`
|
194
194
|
|
@@ -328,7 +328,8 @@ Config files:
|
|
328
328
|
Build types:
|
329
329
|
* 'none' - no build required
|
330
330
|
* 'Dockerfile' - using Dockerfile and docker build command
|
331
|
-
* 'chef' - using Chef provisioning
|
331
|
+
* 'chef' - using Chef provisioning (gem chef-provisioning-docker)
|
332
|
+
* 'packer' - using Packer tool
|
332
333
|
|
333
334
|
|
334
335
|
# Chef provisioning
|
@@ -418,6 +419,36 @@ data for nginx server:
|
|
418
419
|
},
|
419
420
|
```
|
420
421
|
|
422
|
+
|
423
|
+
## Build with Packer
|
424
|
+
|
425
|
+
* config for server
|
426
|
+
```
|
427
|
+
'build' => {
|
428
|
+
'build_type' => 'packer',
|
429
|
+
"image_name" => "myname",
|
430
|
+
|
431
|
+
"base_image" => {
|
432
|
+
"name" => "nginx",
|
433
|
+
"repository" => "nginx",
|
434
|
+
"tag" => "1.10"
|
435
|
+
},
|
436
|
+
|
437
|
+
"packer" => { options for packer }
|
438
|
+
},
|
439
|
+
```
|
440
|
+
|
441
|
+
* options for packer
|
442
|
+
|
443
|
+
* cookbook_paths - list of paths
|
444
|
+
* recipe_name
|
445
|
+
|
446
|
+
|
447
|
+
* examples:
|
448
|
+
```
|
449
|
+
```
|
450
|
+
|
451
|
+
|
421
452
|
# Run container
|
422
453
|
|
423
454
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docker-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Ivak
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- exe/docker-builder
|
124
124
|
- install_local.sh
|
125
125
|
- lib/docker_builder.rb
|
126
|
+
- lib/docker_builder/builder/packer.rb
|
126
127
|
- lib/docker_builder/chef/.chef/knife.rb
|
127
128
|
- lib/docker_builder/chef/chef_build_image.copy0.rb
|
128
129
|
- lib/docker_builder/chef/chef_build_image.rb
|