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 +4 -4
- data/install_local.sh +1 -1
- data/lib/docker_builder/cli.rb +14 -113
- data/lib/docker_builder/manager.rb +36 -9
- data/lib/docker_builder/manager_swarm.rb +12 -0
- data/lib/docker_builder/server_settings.rb +6 -0
- data/lib/docker_builder/version.rb +1 -1
- data/readme.md +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb25008d4f2f9e81b4cb3838fa9aaf50836061fe
|
4
|
+
data.tar.gz: 1a41a6e5f930d7b5904ff0104afabf11e546b776
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
2
|
+
gem install ./docker-builder-0.1.26.gem
|
data/lib/docker_builder/cli.rb
CHANGED
@@ -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
|
-
|
200
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
162
|
+
create_and_run_container(settings)
|
163
163
|
|
164
164
|
end
|
165
165
|
|
166
|
+
true
|
167
|
+
end
|
166
168
|
|
167
|
-
|
168
|
-
#
|
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
|
-
|
172
|
-
|
173
|
-
|
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
|
-
|
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
|
|
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
|
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.
|
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-
|
11
|
+
date: 2017-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|