docker-builder 0.1.23 → 0.1.24
Sign up to get free protection for your applications and to get access to all the features.
- 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
|