dockerun 0.4.0 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dockerspec.sample +4 -1
- data/exe/dockerun +8 -1
- data/lib/dockerun/cli/command.rb +15 -8
- data/lib/dockerun/cli/command_factory.rb +3 -0
- data/lib/dockerun/cli/delete_container.rb +15 -11
- data/lib/dockerun/cli/delete_image.rb +24 -20
- data/lib/dockerun/cli/run.rb +3 -2
- data/lib/dockerun/cli_engine.rb +42 -24
- data/lib/dockerun/config.rb +12 -0
- data/lib/dockerun/dfile.rb +1 -0
- data/lib/dockerun/dsl.rb +57 -6
- data/lib/dockerun/version.rb +1 -1
- data/lib/dockerun.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 559986ed3ba91c19f9fa98cac1b46079e75a5306c4ca248e261c976eb57def34
|
4
|
+
data.tar.gz: 493efa6425fe0eabff6c3ac0f7980c897d7b1a5bf9df874b7b702c60e7a7ba65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99ec2c396bd249a0f5554364a43e6275e77d27ce52586f237b3a1053a78e0c14aa8ea611b7de90cb9cc402bdd86c93aaec08db8fda53fdb8fd12c3af10fc95b2
|
7
|
+
data.tar.gz: ee2a130624310ce35d760684846b4f167e4eb2632190fe5874a2a68695b1d199716257f276ab98d73f62b399d18622c4bb7a77547da84b37bd02d9a76b1024d4
|
data/dockerspec.sample
CHANGED
@@ -35,6 +35,9 @@ config do
|
|
35
35
|
# Docker image is not built and container is not created
|
36
36
|
#dry_run
|
37
37
|
|
38
|
+
# generate the docker runscript so it can be run manually
|
39
|
+
# if required
|
40
|
+
gen_docker_runscript
|
38
41
|
|
39
42
|
end
|
40
43
|
|
@@ -93,7 +96,7 @@ up do
|
|
93
96
|
# Command to be run in docker
|
94
97
|
#run_in_docker "/bin/bash"
|
95
98
|
|
96
|
-
# Map port of
|
99
|
+
# Map port of on host => on docker
|
97
100
|
#port 3080 => 3000
|
98
101
|
end
|
99
102
|
|
data/exe/dockerun
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
require_relative '../lib/dockerun'
|
4
4
|
|
5
|
+
require 'colorize'
|
6
|
+
|
5
7
|
# Operations
|
6
8
|
# 1. [i]nit - Copy sample spec into project dir
|
7
9
|
# 2. [r]un - Run the spec (default without params)
|
@@ -10,5 +12,10 @@ require_relative '../lib/dockerun'
|
|
10
12
|
# 5. reset - Delete container and image
|
11
13
|
|
12
14
|
cli = Dockerun::CliEngine.new
|
13
|
-
|
15
|
+
begin
|
16
|
+
cli.parse_argv(ARGV)
|
17
|
+
rescue TR::ArgUtils::RequiredFieldEmpty => ex
|
18
|
+
STDERR.puts "\n Operation requires parameter. Error was : #{ex.message}".red
|
19
|
+
puts cli.parse_argv(["help"])
|
20
|
+
end
|
14
21
|
|
data/lib/dockerun/cli/command.rb
CHANGED
@@ -17,12 +17,12 @@ module Dockerun
|
|
17
17
|
attr_accessor :command_buffer
|
18
18
|
def initialize(cmd, required_interaction = false)
|
19
19
|
|
20
|
-
cmdOut = ENV["DOCKERUN_COMMAND_OUT"]
|
21
|
-
if not_empty?(cmdOut)
|
22
|
-
|
23
|
-
else
|
24
|
-
|
25
|
-
end
|
20
|
+
#cmdOut = ENV["DOCKERUN_COMMAND_OUT"]
|
21
|
+
#if not_empty?(cmdOut)
|
22
|
+
# @runner = TTY::Command.new(printer: cmdOut.to_sym)
|
23
|
+
#else
|
24
|
+
# @runner = TTY::Command.new(printer: :null)
|
25
|
+
#end
|
26
26
|
|
27
27
|
#@runner = TTY::Command.new
|
28
28
|
@command_buffer = cmd
|
@@ -34,7 +34,7 @@ module Dockerun
|
|
34
34
|
@required_interaction
|
35
35
|
end
|
36
36
|
|
37
|
-
def run(&block)
|
37
|
+
def run(log_console = false, &block)
|
38
38
|
|
39
39
|
if interactive_session?
|
40
40
|
|
@@ -88,7 +88,14 @@ module Dockerun
|
|
88
88
|
else
|
89
89
|
@outStream = []
|
90
90
|
@errStream = []
|
91
|
-
|
91
|
+
|
92
|
+
if(log_console)
|
93
|
+
runner = TTY::Command.new(printer: :pretty)
|
94
|
+
else
|
95
|
+
runner = TTY::Command.new(printer: :null)
|
96
|
+
end
|
97
|
+
|
98
|
+
result = runner.run!(@command_buffer.join(" ")) do |out, err|
|
92
99
|
if block
|
93
100
|
block.call(:outstream, out)
|
94
101
|
block.call(:errstream, err)
|
@@ -13,6 +13,7 @@ module Dockerun
|
|
13
13
|
|
14
14
|
opts = { } if opts.nil?
|
15
15
|
cmd = []
|
16
|
+
cmd << "cd #{opts[:working_dir]} && " if not_empty?(opts[:working_dir])
|
16
17
|
cmd << DockerCli.docker_exe
|
17
18
|
cmd << "build"
|
18
19
|
if not_empty?(name)
|
@@ -168,6 +169,7 @@ module Dockerun
|
|
168
169
|
Command.new(cmd, (interactive ? true : false))
|
169
170
|
end # run_container_from_image
|
170
171
|
|
172
|
+
|
171
173
|
def start_container(container, opts = { })
|
172
174
|
|
173
175
|
opts = {} if opts.nil?
|
@@ -181,6 +183,7 @@ module Dockerun
|
|
181
183
|
Command.new(cmd)
|
182
184
|
end
|
183
185
|
|
186
|
+
|
184
187
|
def attach_container(container, opts = { })
|
185
188
|
|
186
189
|
opts = {} if opts.nil?
|
@@ -9,7 +9,12 @@ module Dockerun
|
|
9
9
|
|
10
10
|
class DeleteContainer
|
11
11
|
|
12
|
-
def
|
12
|
+
def initialize
|
13
|
+
@proxy = DSLProxy.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def start(root)
|
17
|
+
@proxy.set_exec_root(root)
|
13
18
|
begin
|
14
19
|
pmt.puts " Dockerun version #{Dockerun::VERSION}".yellow
|
15
20
|
pmt.puts " Operational : Delete Container"
|
@@ -19,23 +24,22 @@ module Dockerun
|
|
19
24
|
end
|
20
25
|
|
21
26
|
def delete_container
|
22
|
-
selSpec = CliEngine.select_spec
|
27
|
+
selSpec = CliEngine.select_spec(@proxy.exec_root)
|
23
28
|
cont = File.read(selSpec)
|
24
|
-
proxy
|
25
|
-
proxy.
|
26
|
-
proxy.instance_eval(cont)
|
29
|
+
@proxy.set_dry_run_mode
|
30
|
+
@proxy.instance_eval(cont)
|
27
31
|
|
28
|
-
skip = pmt.no?(" Delete container named '#{proxy.container_name}'?")
|
32
|
+
skip = pmt.no?(" Delete container named '#{@proxy.container_name}'?")
|
29
33
|
if not skip
|
30
|
-
cf.stop_container(proxy.container_name).run
|
31
|
-
res = cf.delete_container(proxy.container_name).run
|
34
|
+
cf.stop_container(@proxy.container_name).run
|
35
|
+
res = cf.delete_container(@proxy.container_name).run
|
32
36
|
if res.success?
|
33
|
-
pmt.puts " Container '#{proxy.container_name}' deleted".green
|
37
|
+
pmt.puts " Container '#{@proxy.container_name}' deleted".green
|
34
38
|
else
|
35
|
-
pmt.puts " Container '#{proxy.container_name}' deletion failed. Error was : #{res.err_lines.join("\n")}".red
|
39
|
+
pmt.puts " Container '#{@proxy.container_name}' deletion failed. Error was : #{res.err_lines.join("\n")}".red
|
36
40
|
end
|
37
41
|
else
|
38
|
-
pmt.puts " Container deletion of name '#{proxy.container_name}' aborted.".yellow
|
42
|
+
pmt.puts " Container deletion of name '#{@proxy.container_name}' aborted.".yellow
|
39
43
|
end
|
40
44
|
end
|
41
45
|
|
@@ -10,7 +10,12 @@ module Dockerun
|
|
10
10
|
class DeleteImage
|
11
11
|
include TR::CondUtils
|
12
12
|
|
13
|
-
def
|
13
|
+
def initialize
|
14
|
+
@proxy = DSLProxy.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def start(root)
|
18
|
+
@proxy.set_exec_root(root)
|
14
19
|
begin
|
15
20
|
pmt.puts " Dockerun version #{Dockerun::VERSION}".yellow
|
16
21
|
pmt.puts " Operational : Delete Image"
|
@@ -20,20 +25,19 @@ module Dockerun
|
|
20
25
|
end
|
21
26
|
|
22
27
|
def delete_image
|
23
|
-
selSpec = CliEngine.select_spec
|
28
|
+
selSpec = CliEngine.select_spec(@proxy.exec_root)
|
24
29
|
cont = File.read(selSpec)
|
25
|
-
proxy
|
26
|
-
proxy.
|
27
|
-
proxy.instance_eval(cont)
|
30
|
+
@proxy.set_dry_run_mode
|
31
|
+
@proxy.instance_eval(cont)
|
28
32
|
|
29
|
-
res = cf.find_image(proxy.image_name).run
|
33
|
+
res = cf.find_image(@proxy.image_name).run
|
30
34
|
if res.success?
|
31
35
|
if not_empty?(res.output_lines)
|
32
36
|
|
33
|
-
skip = pmt.no?(" Delete image named '#{proxy.image_name}'?")
|
37
|
+
skip = pmt.no?(" Delete image named '#{@proxy.image_name}'?")
|
34
38
|
if not skip
|
35
|
-
res = cf.find_container_names_by_image_name(proxy.image_name, all_containers: true).run
|
36
|
-
raise Error, "Failed to extract container name by image name '#{proxy.image_name}'" if not res.success?
|
39
|
+
res = cf.find_container_names_by_image_name(@proxy.image_name, all_containers: true).run
|
40
|
+
raise Error, "Failed to extract container name by image name '#{@proxy.image_name}'" if not res.success?
|
37
41
|
|
38
42
|
if not_empty?(res.output_lines)
|
39
43
|
cont = []
|
@@ -41,45 +45,45 @@ module Dockerun
|
|
41
45
|
res.output_lines.each do |l|
|
42
46
|
cont << " #{cnt += 1}. #{l}"
|
43
47
|
end
|
44
|
-
skip = pmt.no?(" All the containers shall be deleted prior to image '#{proxy.image_name}' deletion. Proceed?\n#{cont.join("\n")}")
|
48
|
+
skip = pmt.no?(" All the containers shall be deleted prior to image '#{@proxy.image_name}' deletion. Proceed?\n#{cont.join("\n")}")
|
45
49
|
if not skip
|
46
50
|
res.output_lines.each do |ci|
|
47
51
|
cf.stop_container(ci).run
|
48
52
|
cf.delete_container(ci).run
|
49
53
|
end
|
50
54
|
|
51
|
-
res = cf.delete_image(proxy.image_name).run
|
55
|
+
res = cf.delete_image(@proxy.image_name).run
|
52
56
|
if res.success?
|
53
|
-
pmt.puts " Image '#{proxy.image_name}' deleted".green
|
57
|
+
pmt.puts " Image '#{@proxy.image_name}' deleted".green
|
54
58
|
else
|
55
|
-
raise Error, " Image '#{proxy.image_name}' deletion failed. Error was : #{res.err_lines.join("\n")}"
|
59
|
+
raise Error, " Image '#{@proxy.image_name}' deletion failed. Error was : #{res.err_lines.join("\n")}"
|
56
60
|
end
|
57
61
|
|
58
62
|
else
|
59
|
-
pmt.puts " Delete of image '#{proxy.image_name}' aborted".yellow
|
63
|
+
pmt.puts " Delete of image '#{@proxy.image_name}' aborted".yellow
|
60
64
|
end
|
61
65
|
|
62
66
|
else
|
63
|
-
res = cf.delete_image(proxy.image_name).run
|
67
|
+
res = cf.delete_image(@proxy.image_name).run
|
64
68
|
if res.success?
|
65
|
-
pmt.puts " Image '#{proxy.image_name}' deleted".green
|
69
|
+
pmt.puts " Image '#{@proxy.image_name}' deleted".green
|
66
70
|
else
|
67
|
-
raise Error, " Image '#{proxy.image_name}' deletion failed. Error was : #{res.err_lines.join("\n")}"
|
71
|
+
raise Error, " Image '#{@proxy.image_name}' deletion failed. Error was : #{res.err_lines.join("\n")}"
|
68
72
|
end
|
69
73
|
|
70
74
|
end
|
71
75
|
|
72
76
|
else
|
73
|
-
pmt.puts " Delete of image '#{proxy.image_name}' aborted".yellow
|
77
|
+
pmt.puts " Delete of image '#{@proxy.image_name}' aborted".yellow
|
74
78
|
|
75
79
|
end
|
76
80
|
|
77
81
|
else
|
78
|
-
pmt.puts " Image '#{proxy.image_name}' does not exist".green
|
82
|
+
pmt.puts " Image '#{@proxy.image_name}' does not exist".green
|
79
83
|
end
|
80
84
|
|
81
85
|
else
|
82
|
-
pmt.puts " Failed to find image '#{proxy.image_name}'. Error was : #{res.err_lines.join("\n")}"
|
86
|
+
pmt.puts " Failed to find image '#{@proxy.image_name}'. Error was : #{res.err_lines.join("\n")}"
|
83
87
|
end
|
84
88
|
end
|
85
89
|
|
data/lib/dockerun/cli/run.rb
CHANGED
@@ -8,7 +8,8 @@ module Dockerun
|
|
8
8
|
#include TR::ArgUtils
|
9
9
|
include DSL
|
10
10
|
|
11
|
-
def start
|
11
|
+
def start(root)
|
12
|
+
set_exec_root(root)
|
12
13
|
begin
|
13
14
|
pmt.puts " Dockerun version #{Dockerun::VERSION}".yellow
|
14
15
|
pmt.puts " Operational : Run Spec"
|
@@ -20,7 +21,7 @@ module Dockerun
|
|
20
21
|
|
21
22
|
private
|
22
23
|
def load_spec
|
23
|
-
selSpec = CliEngine.select_spec
|
24
|
+
selSpec = CliEngine.select_spec(exec_root)
|
24
25
|
pmt.puts " Loading spec '#{selSpec}"
|
25
26
|
cont = File.read(selSpec)
|
26
27
|
self.instance_eval(cont)
|
data/lib/dockerun/cli_engine.rb
CHANGED
@@ -9,26 +9,26 @@ module Dockerun
|
|
9
9
|
include TR::ArgUtils
|
10
10
|
|
11
11
|
arg_spec do
|
12
|
-
opt "i", "Initialize sample dockerspec at
|
13
|
-
init
|
12
|
+
opt "i", "Initialize sample dockerspec at given directory as next argument" do |v|
|
13
|
+
init(v)
|
14
14
|
end
|
15
15
|
opt_alias "i", "init"
|
16
16
|
|
17
|
-
opt "r", "Run the dockerspec" do
|
18
|
-
run
|
17
|
+
opt "r", "Run the dockerspec at given directory as next argument" do |v|
|
18
|
+
run(v)
|
19
19
|
end
|
20
20
|
opt_alias "r","run"
|
21
21
|
|
22
|
-
opt "dc", "Delete container" do
|
23
|
-
delete_container
|
22
|
+
opt "dc", "Delete container at given directory as next argument" do |v|
|
23
|
+
delete_container(v)
|
24
24
|
end
|
25
25
|
|
26
|
-
opt "di", "Delete image and its associated container(s)" do
|
27
|
-
delete_image
|
26
|
+
opt "di", "Delete image and its associated container(s) at given directory as next argument" do |v|
|
27
|
+
delete_image(v)
|
28
28
|
end
|
29
29
|
|
30
|
-
opt 'clean', "Clean generated Dockerfile and temporary files" do
|
31
|
-
clean_env
|
30
|
+
opt 'clean', "Clean generated Dockerfile and temporary files at given directory as next argument" do |v|
|
31
|
+
clean_env(v)
|
32
32
|
end
|
33
33
|
|
34
34
|
opt 'help', "Command help" do
|
@@ -49,8 +49,11 @@ module Dockerun
|
|
49
49
|
pmt.puts ""
|
50
50
|
end
|
51
51
|
|
52
|
-
def self.select_spec
|
53
|
-
|
52
|
+
def self.select_spec(root)
|
53
|
+
raise InsufficientParameter, "Given path cannot be empty or nil" if is_empty?(root)
|
54
|
+
|
55
|
+
#sel = Dir.entries(Dir.getwd).sort
|
56
|
+
sel = Dir.entries(root).sort
|
54
57
|
default = sel.select { |e| (e =~ /^dockerspec/) != nil }
|
55
58
|
selSpec = pmt.select(" Please select the dockerspec to proceed : ", filter: true, default: default.first) do |m|
|
56
59
|
sel.each do |s|
|
@@ -63,34 +66,49 @@ module Dockerun
|
|
63
66
|
end
|
64
67
|
|
65
68
|
|
66
|
-
def init
|
69
|
+
def init(root)
|
70
|
+
raise InsufficientParameter, "Given path cannot be empty or nil" if is_empty?(root)
|
71
|
+
|
72
|
+
root = File.expand_path(root)
|
67
73
|
template = File.join(File.dirname(__FILE__),"..","..","dockerspec.sample")
|
68
74
|
if File.exist?(template)
|
69
|
-
FileUtils.cp template, File.join(Dir.getwd, "dockerspec.sample")
|
75
|
+
#FileUtils.cp template, File.join(Dir.getwd, "dockerspec.sample")
|
76
|
+
FileUtils.cp template, File.join(root, "dockerspec.sample")
|
70
77
|
end
|
71
78
|
end
|
72
79
|
|
73
|
-
def run
|
80
|
+
def run(root)
|
81
|
+
raise InsufficientParameter, "Given path cannot be empty or nil" if is_empty?(root)
|
82
|
+
|
83
|
+
root = File.expand_path(root)
|
74
84
|
r = Dockerun::Cli::Run.new
|
75
|
-
r.start
|
85
|
+
r.start(root)
|
76
86
|
end
|
77
87
|
|
78
|
-
def delete_container
|
88
|
+
def delete_container(root)
|
89
|
+
raise InsufficientParameter, "Given path cannot be empty or nil" if is_empty?(root)
|
90
|
+
root = File.expand_path(root)
|
79
91
|
d = Dockerun::Cli::DeleteContainer.new
|
80
|
-
d.start
|
92
|
+
d.start(root)
|
81
93
|
end
|
82
94
|
|
83
|
-
def delete_image
|
95
|
+
def delete_image(root)
|
96
|
+
raise InsufficientParameter, "Given path cannot be empty or nil" if is_empty?(root)
|
97
|
+
root = File.expand_path(root)
|
84
98
|
d = Dockerun::Cli::DeleteImage.new
|
85
|
-
d.start
|
99
|
+
d.start(root)
|
86
100
|
end
|
87
101
|
|
88
|
-
def clean_env
|
89
|
-
|
102
|
+
def clean_env(root)
|
103
|
+
raise InsufficientParameter, "Given path cannot be empty or nil" if is_empty?(root)
|
104
|
+
root = File.expand_path(root)
|
105
|
+
|
106
|
+
Dir.glob(File.join(root,"Dockerfile-*")).each do |f|
|
90
107
|
FileUtils.rm(f)
|
91
108
|
end
|
92
|
-
|
93
|
-
|
109
|
+
pa = File.join(root,"script_for_gem.sh")
|
110
|
+
FileUtils.rm(pa) if File.exist?(pa)
|
111
|
+
self.class.pmt.puts " Generated Dockerfile-* and script_for_gem.sh is deleted at '#{root}'".green
|
94
112
|
end
|
95
113
|
|
96
114
|
def self.pmt
|
data/lib/dockerun/config.rb
CHANGED
@@ -52,6 +52,18 @@ module Dockerun
|
|
52
52
|
@active_context
|
53
53
|
end
|
54
54
|
|
55
|
+
|
56
|
+
def gen_docker_runscript(bool = true, overwrite = false)
|
57
|
+
@_gen_docker_runscript = bool
|
58
|
+
@_overwrite_docker_runscript = overwrite
|
59
|
+
end
|
60
|
+
def is_gen_docker_runscript?
|
61
|
+
@_gen_docker_runscript.nil? ? false : @_gen_docker_runscript
|
62
|
+
end
|
63
|
+
def is_overwrite_docker_runscript?
|
64
|
+
@_overwrite_docker_runscript.nil? ? false : @_overwrite_docker_runscript
|
65
|
+
end
|
66
|
+
|
55
67
|
|
56
68
|
def dry_run(bool = true, prompt = true)
|
57
69
|
@dry_run = bool
|
data/lib/dockerun/dfile.rb
CHANGED
@@ -113,6 +113,7 @@ module Dockerun
|
|
113
113
|
if not skip_update? or not skip_upgrade?
|
114
114
|
st = []
|
115
115
|
st << "#{pkgMgr} update" if not skip_update?
|
116
|
+
st << "#{pkgMgr} install -y apt-transport-https"
|
116
117
|
st << "#{pkgMgr} -y upgrade" if not skip_upgrade?
|
117
118
|
cont << "RUN #{st.join(" && ")}" if not_empty?(st)
|
118
119
|
cont << ""
|
data/lib/dockerun/dsl.rb
CHANGED
@@ -9,6 +9,13 @@ module Dockerun
|
|
9
9
|
module DSL
|
10
10
|
include TR::CondUtils
|
11
11
|
|
12
|
+
def set_exec_root(root)
|
13
|
+
@_exec_root = root
|
14
|
+
end
|
15
|
+
def exec_root
|
16
|
+
@_exec_root
|
17
|
+
end
|
18
|
+
|
12
19
|
def config(&block)
|
13
20
|
_config.instance_eval(&block)
|
14
21
|
end
|
@@ -176,19 +183,30 @@ module Dockerun
|
|
176
183
|
|
177
184
|
def build_image
|
178
185
|
dfile = _dfile.generate
|
179
|
-
dfileName = "Dockerfile-#{SecureRandom.hex(4)}"
|
186
|
+
dfileName = File.join(exec_root,"Dockerfile-#{SecureRandom.hex(4)}")
|
180
187
|
File.open(dfileName,"w") do |f|
|
181
188
|
f.write dfile
|
182
189
|
end
|
183
190
|
|
184
|
-
fact = docker_cf.build_image(image_name, dockerfile: dfileName)
|
191
|
+
fact = docker_cf.build_image(image_name, dockerfile: dfileName, working_dir: exec_root)
|
192
|
+
|
193
|
+
if _config.is_gen_docker_runscript?
|
194
|
+
out = File.join(exec_root,"1.build-image.sh")
|
195
|
+
if (not File.exist?(out)) or _config.is_overwrite_docker_runscript?
|
196
|
+
File.open(out, "w") do |f|
|
197
|
+
f.puts "#!/bin/sh"
|
198
|
+
f.puts fact.to_s
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
185
203
|
if _config.is_dry_run?
|
186
204
|
dry_run_puts "Build Image : #{fact.to_s}"
|
187
205
|
dry_run_puts "Build Image : Returning true to proceed to next phase."
|
188
206
|
dry_run_puts "Generated dockerfile '#{dfileName}' shall be remained in project directory."
|
189
207
|
[true, nil]
|
190
208
|
else
|
191
|
-
res = fact.run
|
209
|
+
res = fact.run(true)
|
192
210
|
if res.success?
|
193
211
|
FileUtils.rm(dFileName) if not _dfile.keep_dockerfile?
|
194
212
|
[true, res]
|
@@ -234,6 +252,16 @@ module Dockerun
|
|
234
252
|
fact = docker_cf.find_running_container(container_name)
|
235
253
|
fact2 = docker_cf.start_container(container_name)
|
236
254
|
|
255
|
+
if _config.is_gen_docker_runscript?
|
256
|
+
out = File.join(exec_root,"3.start-container.sh")
|
257
|
+
if (not File.exist?(out)) or _config.is_overwrite_docker_runscript?
|
258
|
+
File.open(out, "w") do |f|
|
259
|
+
f.puts "#!/bin/sh"
|
260
|
+
f.puts fact.to_s
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
237
265
|
if _config.is_dry_run?
|
238
266
|
dry_run_puts "Find running container : #{fact.to_s}"
|
239
267
|
dry_run_puts "Start container : #{fact2.to_s}"
|
@@ -252,12 +280,23 @@ module Dockerun
|
|
252
280
|
|
253
281
|
def attach_container
|
254
282
|
fact = docker_cf.attach_container(container_name)
|
283
|
+
|
284
|
+
if _config.is_gen_docker_runscript?
|
285
|
+
out = File.join(exec_root,"4.attach-container.sh")
|
286
|
+
if (not File.exist?(out)) or _config.is_overwrite_docker_runscript?
|
287
|
+
File.open(out, "w") do |f|
|
288
|
+
f.puts "#!/bin/sh"
|
289
|
+
f.puts fact.to_s
|
290
|
+
end
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
255
294
|
if _config.is_dry_run?
|
256
295
|
dry_run_puts "Attach container : #{fact.to_s}"
|
257
296
|
else
|
258
297
|
fact.run
|
259
298
|
end
|
260
|
-
|
299
|
+
|
261
300
|
end
|
262
301
|
|
263
302
|
def run_container
|
@@ -267,9 +306,21 @@ module Dockerun
|
|
267
306
|
params[:ports] = {} if params[:ports].nil?
|
268
307
|
params[:ports].merge!(_docker_cli.expose_ports) if _docker_cli.has_exposed_ports?
|
269
308
|
|
270
|
-
|
309
|
+
rparams = _docker_cli.trigger_listener(:docker_cli_construct_command, params)
|
310
|
+
rparams = params if is_empty?(rparams)
|
311
|
+
|
312
|
+
fact = docker_cf.create_container_from_image(image_name, rparams)
|
313
|
+
|
314
|
+
if _config.is_gen_docker_runscript?
|
315
|
+
out = File.join(exec_root,"2.create-container.sh")
|
316
|
+
if (not File.exist?(out)) or _config.is_overwrite_docker_runscript?
|
317
|
+
File.open(out, "w") do |f|
|
318
|
+
f.puts "#!/bin/sh"
|
319
|
+
f.puts fact.to_s
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
271
323
|
|
272
|
-
fact = docker_cf.create_container_from_image(image_name, params)
|
273
324
|
if _config.is_dry_run?
|
274
325
|
dry_run_puts "Run container : #{fact.to_s}"
|
275
326
|
else
|
data/lib/dockerun/version.rb
CHANGED
data/lib/dockerun.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dockerun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: teLogger
|