docker-builder 0.1.25 → 0.1.26

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 590dc97a71333ef0960838b0f668c7f79bd5f2f9
4
- data.tar.gz: 8beb8ea5d8fb422e1c59eb7568aedea7e077a0c9
3
+ metadata.gz: fb25008d4f2f9e81b4cb3838fa9aaf50836061fe
4
+ data.tar.gz: 1a41a6e5f930d7b5904ff0104afabf11e546b776
5
5
  SHA512:
6
- metadata.gz: 286b88c096ae6f4eeea52b906be704b49f82f008fb954497081f813376614ad069684861719781f745c1cba3389148971d5ca7cf9ebfc312861f470719b8de98
7
- data.tar.gz: f4c26d92e464377fe7992c5519af87dac68113e40c24365283af0a32692ca09be5fa93f72c087edbebb7d66e4713df06b0252d147362916a16cde7462c9a8e25
6
+ metadata.gz: af7cf7a928edc1de2fe7ea1c2e871c7b1ec2b1fdfa0f139553e8bc14f5c53e8464bb991a8acc69e8f57c17fa9928a3815926ad4cace66f5495197668a0f28f05
7
+ data.tar.gz: f0f127dd2eb74cc3dcfd241a45285b1599fd17f4005385bcf17c97201eb89ef6d3a6862712c65304c2f7a73cc4c9cd3c0378c255e4de480aafde073fc711d1f1
data/install_local.sh CHANGED
@@ -1,2 +1,2 @@
1
1
  gem build docker-builder.gemspec
2
- gem install ./docker-builder-0.1.25.gem
2
+ gem install ./docker-builder-0.1.26.gem
@@ -196,8 +196,14 @@ class CLI < Thor
196
196
  Config.servers.each do |name, opts|
197
197
  server_settings = Settings.load_settings_for_server(name)
198
198
 
199
- Manager.destroy_container(name, server_settings)
200
- Manager.run_container(name, server_settings)
199
+ if server_settings.is_swarm_mode?
200
+ ManagerSwarm.destroy_service(name, server_settings)
201
+ ManagerSwarm.create_service(name, server_settings)
202
+ else
203
+ Manager.destroy_container(name, server_settings)
204
+ Manager.run_container(name, server_settings)
205
+ end
206
+
201
207
  end
202
208
 
203
209
  rescue Exception => err
@@ -256,7 +262,12 @@ class CLI < Thor
256
262
  Config.servers.each do |name, opts|
257
263
  server_settings = Settings.load_settings_for_server(name)
258
264
 
259
- Manager.destroy_container(name, server_settings)
265
+ if server_settings.is_swarm_mode?
266
+ ManagerSwarm.destroy_service(name, server_settings)
267
+ else
268
+ Manager.destroy_container(name, server_settings)
269
+ end
270
+
260
271
  end
261
272
 
262
273
  rescue Exception => err
@@ -330,116 +341,6 @@ class CLI < Thor
330
341
  end
331
342
 
332
343
 
333
- ### swarm mode
334
-
335
- ##
336
- # [up_swarm]
337
- #
338
- #
339
- desc 'up_swarm', 'Run Docker container in swarm mode'
340
-
341
- long_desc <<-EOS.gsub(/^ +/, '')
342
- Run Docker container in swarm mode.
343
- EOS
344
-
345
- method_option :server,
346
- :aliases => ['-s', '--server'],
347
- :required => false,
348
- :type => :string,
349
- :desc => "Server name"
350
-
351
- method_option :root_path,
352
- :aliases => '-r',
353
- :type => :string,
354
- :default => '',
355
- :desc => 'Root path to base all relative path on.'
356
-
357
- method_option :config_file,
358
- :aliases => '-c',
359
- :type => :string,
360
- :default => 'config.rb',
361
- :desc => 'Path to your config.rb file.'
362
-
363
- def up_swarm
364
- puts "running..."
365
-
366
- warnings = false
367
- errors = false
368
-
369
-
370
- servers = nil
371
- begin
372
- Config.load(options)
373
-
374
- Config.servers.each do |name, opts|
375
- server_settings = Settings.load_settings_for_server(name)
376
-
377
- ManagerSwarm.destroy_service(name, server_settings)
378
- ManagerSwarm.create_service(name, server_settings)
379
- end
380
-
381
- rescue Exception => err
382
- puts "exception: #{err.inspect}"
383
- raise err
384
- exit(3)
385
- end
386
-
387
- exit(errors ? 2 : 1) if errors || warnings
388
-
389
- end
390
-
391
- ##
392
- # [destroy_swarm]
393
- #
394
- #
395
- desc 'destroy_swarm', 'Remove service in Docker swarm mode'
396
-
397
- long_desc <<-EOS.gsub(/^ +/, '')
398
- Remove service in Docker swarm mode
399
- EOS
400
-
401
- method_option :server,
402
- :aliases => ['-s', '--server'],
403
- :required => false,
404
- :type => :string,
405
- :desc => "Server name"
406
-
407
- method_option :root_path,
408
- :aliases => '-r',
409
- :type => :string,
410
- :default => '',
411
- :desc => 'Root path to base all relative path on.'
412
-
413
- method_option :config_file,
414
- :aliases => '-c',
415
- :type => :string,
416
- :default => 'config.rb',
417
- :desc => 'Path to your config.rb file.'
418
-
419
- def destroy_swarm
420
- puts "destroying..."
421
-
422
- warnings = false
423
- errors = false
424
-
425
- servers = nil
426
- begin
427
- Config.load(options)
428
-
429
- Config.servers.each do |name, opts|
430
- server_settings = Settings.load_settings_for_server(name)
431
- ManagerSwarm.destroy_service(name, server_settings)
432
- end
433
-
434
- rescue Exception => err
435
- puts "exception: #{err.inspect}"
436
- raise err
437
- exit(3)
438
- end
439
-
440
- exit(errors ? 2 : 1) if errors || warnings
441
-
442
- end
443
344
 
444
345
 
445
346
 
@@ -149,7 +149,7 @@ class Manager
149
149
  #_provision_container_chef_recipe(settings)
150
150
  elsif script_type && script_type=='shell'
151
151
  # docker run
152
- cmd %Q(docker run -d --name #{settings.container_name} #{settings.docker_ports_string} #{settings.docker_volumes_string} #{settings.docker_volumes_from_string} #{settings.docker_links_string} #{settings.run_extra_options_string} #{settings.run_env_variables_string} #{settings.image_name} #{settings['docker']['command']} #{settings['docker']['run_options']})
152
+ create_and_run_container(settings)
153
153
 
154
154
  # provision with shell script
155
155
  run_shell_script_in_container(settings, "install.sh")
@@ -159,22 +159,49 @@ class Manager
159
159
  #_run_container_docker(settings)
160
160
 
161
161
  # docker run
162
- cmd %Q(docker run -d --name #{settings.container_name} #{settings.docker_ports_string} #{settings.docker_volumes_string} #{settings.docker_volumes_from_string} #{settings.docker_links_string} #{settings.run_extra_options_string} #{settings.run_env_variables_string} #{settings.image_name} #{settings['docker']['command']} #{settings['docker']['run_options']})
162
+ create_and_run_container(settings)
163
163
 
164
164
  end
165
165
 
166
+ true
167
+ end
166
168
 
167
- # fix hosts
168
- #puts "adding hosts..."
169
- #puts "a= #{settings.attributes}"
169
+ def self.create_and_run_container(settings)
170
+ #cmd %Q(docker run -d --name #{settings.container_name} #{settings.docker_ports_string} #{settings.docker_volumes_string} #{settings.docker_volumes_from_string} #{settings.docker_links_string} #{settings.run_extra_options_string} #{settings.run_env_variables_string} #{settings.image_name} #{settings['docker']['command']} #{settings['docker']['run_options']})
170
171
 
171
- container_hosts = settings.node['hosts'] || []
172
- container_hosts.each do |r|
173
- cmd %Q(docker exec #{settings.container_name} bash -c 'echo "#{r[0]} #{r[1]}" >> /etc/hosts')
172
+ # create
173
+ cmd %Q(docker create --name #{settings.container_name} #{settings.docker_ports_string} #{settings.docker_volumes_string} #{settings.docker_volumes_from_string} #{settings.docker_links_string} #{settings.run_extra_options_string} #{settings.run_env_variables_string} #{settings.image_name} #{settings['docker']['command']} #{settings['docker']['run_options']})
174
+
175
+ # second network
176
+ network2 = settings['docker']['network_secondary']
177
+ if network2
178
+ ip = network2['ip']
179
+ s_ip = "--ip #{ip}" if ip
180
+ cmd %Q(docker network connect #{s_ip} #{network2['net']} #{settings.container_name})
174
181
  end
175
182
 
183
+ # start
184
+ cmd %Q(docker start #{settings.container_name})
176
185
 
177
- true
186
+ # fixes
187
+ if network2
188
+ gateway = network2['gateway']
189
+
190
+ if gateway
191
+ # fix default gateway
192
+ cmd %Q(docker exec #{settings.container_name} ip route change default via #{gateway} dev eth1)
193
+ end
194
+
195
+ end
196
+
197
+ # fix hosts
198
+ puts "fix hosts"
199
+ container_hosts = settings['docker']['hosts'] || []
200
+ container_hosts.each do |r|
201
+ puts "fix host #{r[0]} #{r[1]}"
202
+ #cmd %Q(docker exec #{settings.container_name} bash -c 'echo "#{r[0]} #{r[1]}" >> /etc/hosts')
203
+ cmd %Q(docker exec #{settings.container_name} sh -c 'echo "#{r[0]} #{r[1]}" >> /etc/hosts')
204
+ end
178
205
  end
179
206
 
180
207
 
@@ -19,6 +19,9 @@ module DockerBuilder
19
19
  destroy_service(server_name, settings)
20
20
 
21
21
 
22
+ # prepare
23
+ create_volumes_dirs(settings)
24
+
22
25
  # create service
23
26
  docker_opts = settings.attributes['docker']
24
27
 
@@ -42,6 +45,15 @@ module DockerBuilder
42
45
  end
43
46
 
44
47
 
48
+ # volumes
49
+ def self.create_volumes_dirs(settings)
50
+ settings.docker_volumes.each do |r|
51
+ dirpath = "#{r[0]}"
52
+ if !Dir.exists?(dirpath)
53
+ FileUtils.mkdir_p(dirpath) rescue nil
54
+ end
55
+ end
56
+ end
45
57
 
46
58
  # helpers
47
59
 
@@ -244,6 +244,12 @@ class ServerSettings
244
244
  end
245
245
 
246
246
 
247
+ ###
248
+ def is_swarm_mode?
249
+ v = attributes["docker"]["swarm_mode"]
250
+ return false if v.nil?
251
+ return v
252
+ end
247
253
 
248
254
  ###
249
255
  def [](key)
@@ -1,3 +1,3 @@
1
1
  module DockerBuilder
2
- VERSION = "0.1.25"
2
+ VERSION = "0.1.26"
3
3
  end
data/readme.md CHANGED
@@ -484,7 +484,7 @@ it will NOT build a new Docker image.
484
484
 
485
485
  * packer - https://github.com/mitchellh/packer
486
486
 
487
- Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
487
+ Packer is a tool for creating machine images for multiple platforms from a single source configuration.
488
488
 
489
489
 
490
490
 
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.25
4
+ version: 0.1.26
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-23 00:00:00.000000000 Z
11
+ date: 2017-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler