docker-builder 0.1.18 → 0.1.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/example-swarm-redis/config.rb +61 -0
- data/examples/example-swarm-redis/readme.md +10 -0
- data/install_local.sh +1 -1
- data/lib/docker_builder.rb +2 -0
- data/lib/docker_builder/cli.rb +114 -0
- data/lib/docker_builder/command.rb +16 -0
- data/lib/docker_builder/manager.rb +1 -8
- data/lib/docker_builder/manager_swarm.rb +46 -0
- data/lib/docker_builder/version.rb +1 -1
- data/readme.md +22 -0
- metadata +5 -2
- data/bootstrap_local.sh +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9decd6798b5b0e74debf337079619b93a7f9b55b
|
4
|
+
data.tar.gz: bb395e7fd4f4ec4f7401e72956f2d6e255ec1125
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6be299c8ce18ac07a5948551e4e5e41e2c125a25eb57cf2f63b5159166635e82c482d3a6f2a7093703880d6ea89f362a08d1aca8ebc56b57cedd92ee06582f7
|
7
|
+
data.tar.gz: 04ad6e29653eb83590d8685ebf8ab73644af52e4ea8b46dcce1b5fcd2f23ed95d86fccd4069f31e84bd71333d268f3d11022276e56d58a3285cf61343e11ed16
|
@@ -0,0 +1,61 @@
|
|
1
|
+
common({
|
2
|
+
'prefix' => "example-",
|
3
|
+
'image_prefix' => 'example-',
|
4
|
+
'dir_data' => '/disk3/data/my-examples/',
|
5
|
+
|
6
|
+
})
|
7
|
+
|
8
|
+
servers({
|
9
|
+
'redis'=>{
|
10
|
+
|
11
|
+
'build' => {
|
12
|
+
"image_name" => "redis",
|
13
|
+
'build_type' => 'none',
|
14
|
+
|
15
|
+
"base_image" => {
|
16
|
+
"name" => "redis",
|
17
|
+
"repository" => "redis",
|
18
|
+
"tag" => "3.2.4"
|
19
|
+
|
20
|
+
},
|
21
|
+
|
22
|
+
},
|
23
|
+
|
24
|
+
'install'=> {
|
25
|
+
},
|
26
|
+
|
27
|
+
'docker'=> {
|
28
|
+
#"command"=> "",
|
29
|
+
'ports' => [
|
30
|
+
[6379,80],
|
31
|
+
],
|
32
|
+
'volumes' => [
|
33
|
+
],
|
34
|
+
'links' => [
|
35
|
+
],
|
36
|
+
|
37
|
+
# network
|
38
|
+
#"ip"=>"10.1.0.144",
|
39
|
+
#"net"=> "pub_net",
|
40
|
+
|
41
|
+
# for swarm
|
42
|
+
"swarm_network"=> "pub_net",
|
43
|
+
#"swarm_options" => ""
|
44
|
+
"swarm_options" => "--replicas=1 --restart-max-attempts=1"
|
45
|
+
#"swarm_options" => "-e constraint:node==mmxpc "
|
46
|
+
# --net=pub_net --ip=10.1.0.131
|
47
|
+
|
48
|
+
},
|
49
|
+
|
50
|
+
'attributes'=> {
|
51
|
+
}
|
52
|
+
|
53
|
+
}, # / redis
|
54
|
+
|
55
|
+
|
56
|
+
})
|
57
|
+
|
58
|
+
|
59
|
+
base({
|
60
|
+
|
61
|
+
})
|
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.19.gem
|
data/lib/docker_builder.rb
CHANGED
data/lib/docker_builder/cli.rb
CHANGED
@@ -329,6 +329,120 @@ class CLI < Thor
|
|
329
329
|
|
330
330
|
end
|
331
331
|
|
332
|
+
|
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
|
+
|
444
|
+
|
445
|
+
|
332
446
|
##
|
333
447
|
# [clear_cache]
|
334
448
|
#
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module DockerBuilder
|
2
|
+
class ManagerSwarm
|
3
|
+
|
4
|
+
def self.destroy_service(server_name, settings)
|
5
|
+
puts "destroying service #{server_name}..."
|
6
|
+
|
7
|
+
#
|
8
|
+
cmd %Q(docker service rm #{settings.container_name} )
|
9
|
+
|
10
|
+
#
|
11
|
+
return true
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
def self.create_service(server_name, settings={})
|
16
|
+
puts "create swarm service.."
|
17
|
+
|
18
|
+
# destroy
|
19
|
+
destroy_service(server_name, settings)
|
20
|
+
|
21
|
+
|
22
|
+
# create service
|
23
|
+
docker_opts = settings.attributes['docker']
|
24
|
+
|
25
|
+
run_opts = []
|
26
|
+
run_opts << "--network #{docker_opts['swarm_network']}" if docker_opts['swarm_network']
|
27
|
+
run_opts << docker_opts['swarm_options']
|
28
|
+
|
29
|
+
cmd %Q(docker service create \
|
30
|
+
--name #{settings.container_name} #{settings.docker_ports_string} \
|
31
|
+
#{run_opts.join(' ')} \
|
32
|
+
#{settings.image_name} #{settings['docker']['command']}
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
# helpers
|
39
|
+
|
40
|
+
def self.cmd(s)
|
41
|
+
Command.cmd(s)
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
data/readme.md
CHANGED
@@ -485,3 +485,25 @@ Sometimes you need to clear cache with server info in chef-zero server
|
|
485
485
|
```
|
486
486
|
docker-builder clear_cache
|
487
487
|
```
|
488
|
+
|
489
|
+
|
490
|
+
# Run in swarm mode
|
491
|
+
|
492
|
+
* commands
|
493
|
+
|
494
|
+
docker-builder :up_swarm
|
495
|
+
|
496
|
+
docker-builder :destroy_swarm
|
497
|
+
|
498
|
+
|
499
|
+
* config
|
500
|
+
|
501
|
+
```
|
502
|
+
docker: {
|
503
|
+
# options here...
|
504
|
+
}
|
505
|
+
```
|
506
|
+
|
507
|
+
* swarm_network - network name
|
508
|
+
* swarm_options - options to pass to docker service create command
|
509
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Ivak
|
@@ -67,7 +67,6 @@ files:
|
|
67
67
|
- Rakefile
|
68
68
|
- bin/console
|
69
69
|
- bin/setup
|
70
|
-
- bootstrap_local.sh
|
71
70
|
- docker-builder.gemspec
|
72
71
|
- examples/example-apps-php/.chef/knife.rb
|
73
72
|
- examples/example-apps-php/config.rb
|
@@ -119,6 +118,8 @@ files:
|
|
119
118
|
- examples/example-nginx/servers/nginx/scripts/install.sh
|
120
119
|
- examples/example-nginx/temp/ex_nginx.json
|
121
120
|
- examples/example-nginx/temp/nginx.json
|
121
|
+
- examples/example-swarm-redis/config.rb
|
122
|
+
- examples/example-swarm-redis/readme.md
|
122
123
|
- exe/docker-builder
|
123
124
|
- install_local.sh
|
124
125
|
- lib/docker_builder.rb
|
@@ -135,6 +136,7 @@ files:
|
|
135
136
|
- lib/docker_builder/chef/config_run_install_container_service.json
|
136
137
|
- lib/docker_builder/chef/install_container_service.rb
|
137
138
|
- lib/docker_builder/cli.rb
|
139
|
+
- lib/docker_builder/command.rb
|
138
140
|
- lib/docker_builder/config.rb
|
139
141
|
- lib/docker_builder/config/dsl.rb
|
140
142
|
- lib/docker_builder/config/helpers.rb
|
@@ -148,6 +150,7 @@ files:
|
|
148
150
|
- lib/docker_builder/cookbooks/docker-builder/recipes/provision_container.rb
|
149
151
|
- lib/docker_builder/cookbooks/docker-builder/resources/mycontainer.rb
|
150
152
|
- lib/docker_builder/manager.rb
|
153
|
+
- lib/docker_builder/manager_swarm.rb
|
151
154
|
- lib/docker_builder/server_settings.rb
|
152
155
|
- lib/docker_builder/version.rb
|
153
156
|
- lib/templates/example-chef/.chef/knife.rb
|
data/bootstrap_local.sh
DELETED