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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 67fd03923ffadd7432eb6e42694a94cdbf79af8c
4
- data.tar.gz: ad52f2eb9e4555b16bd497cd123e923b0d05f83e
3
+ metadata.gz: 23bcf79f32645c64e052f96e3a743a7a656bea21
4
+ data.tar.gz: 4747e4c276d7145149992f09b0653fa13d8ce116
5
5
  SHA512:
6
- metadata.gz: 92bb939895e8996ce507e00d43cba1e004c71a2e26e7ec0e259b15044a6f6f72adce8208c4770facc7421ec9d211fca4ab72b59e2e208aaf94e8598755443f83
7
- data.tar.gz: 8dd28c16a1ed9717f443f93ad24a04003f9df818e4c2cbb54555df70c74e7a894fcb41d84d91795a6f1d64a1f0251989a6877e8c2b8523185cb055562fa3036c
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.21.gem
2
+ gem install ./docker-builder-0.1.24.gem
@@ -8,7 +8,7 @@ module DockerBuilder
8
8
 
9
9
 
10
10
  ##
11
- # Require Backup base files
11
+ # Require base files
12
12
  %w{
13
13
  config
14
14
  command
@@ -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
@@ -1,3 +1,3 @@
1
1
  module DockerBuilder
2
- VERSION = "0.1.23"
2
+ VERSION = "0.1.24"
3
3
  end
data/readme.md CHANGED
@@ -188,7 +188,7 @@ http://localhost:8080
188
188
 
189
189
  # Basic usage
190
190
 
191
- # Provision wich shell script
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.23
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-17 00:00:00.000000000 Z
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