docker-builder 0.1.25 → 0.1.26

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: 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