dockerun 0.2.3 → 0.3.0

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
  SHA256:
3
- metadata.gz: 3708d3f0eacf918a4dfc777b56877f3b5b5c8cfafb12788d24e15e4f053a6349
4
- data.tar.gz: 2d55bcc161e746f6e06bcd17df6d57ad8577cf27e6cea161e789503137e11406
3
+ metadata.gz: 1ccd48be4fd82ee86c3b6deb93c7a8be20cbbb59a2ec78787a61a37a9475efee
4
+ data.tar.gz: 45a7edef9b777709cd1fd00023fcc8b85b936a4ac9bd3c6ff33e947e3aa0f670
5
5
  SHA512:
6
- metadata.gz: a86514ff23b8d55d047acf3ef7dea424088a9111ec61aa8380104df8e6bc2bb5af26da7d1aaa01b48b225dddfed7ca8b226b7b085bbdb43c42bd48e783ee5f60
7
- data.tar.gz: a75eba6dd5f4ed44e7d4b0af4c972e6d25cdbdf9e0d45d26b5a28bf46bb0d05ae1da3130b92d3897414564f35c5086d6a723cb818cdd9e2c386bfe778748bc74
6
+ metadata.gz: ca7b6356dfda231e2a6df168dbc56b7ce4dd6c89abf2021f131a9275161ddfb1fe0565508e203005b42a3a9e9f0fc97c87169480694aece85a1555232a4a4f7f
7
+ data.tar.gz: e2633ace5cc2be1e2c38fa6fedce959dfbc56897db28f67254ab9224db35f115ab5071f9c28227ce43851eef8a5292cb5d0929a463118908649ff8451fc7c200
data/.release_history.yml CHANGED
@@ -30,6 +30,8 @@ dockerun:
30
30
  :timestamp: 1670649972.645625
31
31
  - :version: 0.1.14
32
32
  :timestamp: 1670677180.3442845
33
+ - :version: 0.1.15_mac
34
+ :timestamp: 1679552032.751968
33
35
  - :version: 0.1.15
34
36
  :timestamp: 1679980468.4161575
35
37
  - :version: 0.1.16
data/Dockerfile.dockerun CHANGED
@@ -1,15 +1,9 @@
1
1
 
2
- FROM ruby:2.7.6
3
- LABEL version="0.1"
4
- LABEL maintainer="chris"
5
- LABEL description="Dockerfile generated by dockerun"
6
- LABEL dockerun-info="https://github.com/chrisliaw/dockerun"
7
-
8
-
9
- RUN apt-get update && apt-get install -y sudo git curl build-essential vim
10
-
11
-
2
+ FROM jruby:9.4.0-jdk11
3
+ LABEL version="0.1" description="Dockerfile generated by dockerun" maintainer="chris"
12
4
 
5
+ # Dockerfile entries here
6
+ RUN apt-get update && apt-get install -y sudo
13
7
 
14
8
  RUN groupadd -f -g 1000 chris && \
15
9
  useradd -u 1000 -g 1000 -m chris && \
@@ -18,22 +12,8 @@ RUN groupadd -f -g 1000 chris && \
18
12
 
19
13
  USER chris
20
14
 
21
- # from this point onwards, sudo is required for privileaged operation
22
- #RUN sudo apt-get install -y curl build-essential
23
-
24
-
25
- COPY on_docker_config /home/chris/docker_init.rb
26
- #RUN chown chris:chris /home/chris/docker_init.rb
27
- RUN ruby /home/chris/docker_init.rb
28
-
29
-
30
-
31
-
32
-
33
- WORKDIR /opt
34
-
35
-
36
- # other Dockerfile entries starts here
15
+ RUN sudo apt-get install -y curl git
37
16
 
17
+ # ENTRYPOINT [ "/bin/bash" ]
18
+ # CMD [ "/bin/bash", "--login" ]
38
19
  CMD [ "/bin/bash", "--login" ]
39
-
data/Gemfile CHANGED
@@ -9,6 +9,7 @@ gem "rake", "~> 13.0"
9
9
 
10
10
  gem "rspec", "~> 3.0"
11
11
 
12
+ #gem 'git_cli', git: "git_cli", branch: "master"
12
13
  #gem 'docker-cli', git: "docker-cli", branch: "master"
13
14
 
14
15
 
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dockerun (0.2.3)
4
+ dockerun (0.3.0)
5
5
  colorize
6
- docker-cli (>= 0.1.2)
7
- teLogger (> 0.2.0)
8
- toolrack (> 0.19.1)
6
+ docker-cli
7
+ teLogger
8
+ toolrack
9
9
  tty-command
10
10
  tty-option
11
11
 
@@ -21,9 +21,10 @@ GEM
21
21
  toolrack
22
22
  tty-prompt
23
23
  diff-lcs (1.5.0)
24
- docker-cli (0.2.0)
24
+ docker-cli (0.3.1)
25
25
  ptools
26
26
  teLogger
27
+ toolrack
27
28
  tty-command
28
29
  tty-prompt
29
30
  git_cli (0.11.2)
@@ -71,7 +72,7 @@ GEM
71
72
  wisper (2.0.1)
72
73
 
73
74
  PLATFORMS
74
- ruby
75
+ x86_64-darwin-21
75
76
  x86_64-linux
76
77
 
77
78
  DEPENDENCIES
@@ -81,4 +82,4 @@ DEPENDENCIES
81
82
  rspec (~> 3.0)
82
83
 
83
84
  BUNDLED WITH
84
- 2.2.28
85
+ 2.4.10
data/dockerun.gemspec CHANGED
@@ -30,14 +30,14 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
- spec.add_dependency 'toolrack' , '> 0.19.1'
34
- spec.add_dependency 'teLogger' , '> 0.2.0'
33
+ spec.add_dependency 'toolrack' #, '> 0.19.1'
34
+ spec.add_dependency 'teLogger' #, '> 0.2.0'
35
35
 
36
36
  spec.add_dependency 'tty-command' #, "> 0.10.1"
37
37
  spec.add_dependency 'tty-option' #, "> 0.2.0"
38
38
  spec.add_dependency 'colorize'
39
39
 
40
- spec.add_dependency 'docker-cli', ">= 0.1.2"
40
+ spec.add_dependency 'docker-cli' #, ">= 0.1.2"
41
41
 
42
42
  spec.add_development_dependency 'devops_assist'
43
43
 
data/exe/dockerun CHANGED
@@ -80,6 +80,17 @@ else
80
80
  pmt.say "\n\n Aborted\n", color: :yellow
81
81
  end
82
82
 
83
+ when "stop", "s"
84
+
85
+ begin
86
+ runCmd = Dockerun::Command::StopContainer.new
87
+ argv = ARGV[1..-1]
88
+ runCmd.parse(argv).run
89
+ rescue TTY::Reader::InputInterrupt
90
+ end
91
+
92
+
93
+
83
94
 
84
95
  when "rmi", "remove-image"
85
96
  begin
@@ -1,4 +1,5 @@
1
1
 
2
+ require 'colorize'
2
3
  require 'tty/prompt'
3
4
 
4
5
  module Dockerun
@@ -14,7 +14,7 @@ module Dockerun
14
14
 
15
15
  argument :command do
16
16
  required
17
- desc "Command for the dockerun operations. Supported: init, run (r), run-new-container (rnc), run-new-image (rni), remove-image (rmi), remove-container (rmc)"
17
+ desc "Command for the dockerun operations. Supported: init, run (r), stop (s), run-new-container (rnc), run-new-image (rni), remove-image (rmi), remove-container (rmc)"
18
18
  end
19
19
 
20
20
  def run
@@ -16,6 +16,7 @@ module Dockerun
16
16
  include CommandHelper::DockerContainerHelper
17
17
  include DockerCommandFactoryHelper
18
18
  include CommandHelper::DockerImageHelper
19
+ include CliHelper::CliPrompt
19
20
 
20
21
  usage do
21
22
  program "dockerun"
@@ -0,0 +1,90 @@
1
+
2
+ require_relative '../cli_prompt'
3
+ require_relative '../config'
4
+ require_relative '../docker_container_helper'
5
+
6
+ module Dockerun
7
+ module Command
8
+
9
+ class StopContainer
10
+
11
+ include TTY::Option
12
+ include TR::CondUtils
13
+ include CommandHelper::DockerContainerHelper
14
+ include DockerCommandFactoryHelper
15
+ include CliHelper::CliPrompt
16
+
17
+ usage do
18
+ program "dockerun"
19
+ command "stop"
20
+ desc "Stop a running container"
21
+ end
22
+
23
+ def run(&block)
24
+ if params[:help]
25
+ print help
26
+ exit(0)
27
+
28
+ else
29
+
30
+ # find history file
31
+ config = ::Dockerun::Config.from_storage
32
+
33
+ res = []
34
+ opts = []
35
+ config.image_names.each do |im|
36
+ config.container_names(im).each do |cn|
37
+ if is_container_exist?(cn)
38
+ if is_container_running?(cn)
39
+ res << "#{im} : #{cn} (Running)"
40
+ opts << cn
41
+ else
42
+ res << "#{im} : #{cn} (Not Running)"
43
+ end
44
+ else
45
+ res << "#{im} : #{cn} (Not Exist)"
46
+ end
47
+ end
48
+ end
49
+
50
+ if not opts.empty?
51
+ cli.puts "\n Running status of container(s) : ".yellow
52
+ res.sort.each do |r|
53
+ cli.puts " * #{r}".yellow
54
+ end
55
+
56
+ cli.puts
57
+ selConts = cli.multi_select("Please select which container to stop : ") do |m|
58
+ opts.each do |o|
59
+ m.choice o,o
60
+ end
61
+
62
+ m.choice "Abort", :quit
63
+ end
64
+
65
+ if selConts.include?(:quit)
66
+ cli.puts " * Abort was one of the selected option. Command aborted.".red
67
+ else
68
+ selConts.each do |sc|
69
+ begin
70
+ stop_container(sc)
71
+ cli.puts " Container '#{sc}' stopped successfully.".green
72
+ rescue DockerContainerStopFailed => ex
73
+ cli.puts " Container '#{sc}' failed to be stopped".red
74
+ end
75
+ end
76
+ end
77
+
78
+ else
79
+ cli.say " * There is no container found to be running * ".yellow
80
+ end
81
+
82
+ cli.puts "\n Stop container command completed successfully \n\n".yellow
83
+
84
+ end
85
+ end
86
+
87
+ end
88
+
89
+ end
90
+ end
@@ -28,9 +28,9 @@ module Dockerun
28
28
 
29
29
  def initialize(configHash = { }, configFileAvail = false)
30
30
  @config = configHash
31
- @images = @config[:images]
31
+ @images = @config[:images] || { }
32
32
  @confFileAvail = configFileAvail
33
- @images = { } if @images.nil?
33
+ #@images = { } if @images.nil?
34
34
  end
35
35
 
36
36
  def isConfigFileAvail?
@@ -74,8 +74,8 @@ module Dockerun
74
74
  @images[imageName][container][:mount] << mount
75
75
  end
76
76
 
77
- def mount_of_container(container)
78
- res = @containers[container]
77
+ def container_mount_points(imageName, container)
78
+ res = @images[imageName][container]
79
79
  if is_empty?(res) or is_empty?(res[:mount])
80
80
  []
81
81
  else
@@ -2,6 +2,10 @@
2
2
  require 'docker/cli'
3
3
 
4
4
  module Dockerun
5
+
6
+ #
7
+ # Link to CommandFactory
8
+ #
5
9
  module DockerCommandFactoryHelper
6
10
 
7
11
  def dcFact
@@ -4,21 +4,29 @@ require_relative 'bundler_helper'
4
4
 
5
5
  module Dockerun
6
6
  module CommandHelper
7
+
8
+ #
9
+ # Common functions for docker container management
10
+ #
7
11
  module DockerContainerHelper
8
12
  include DockerCommandFactoryHelper
9
13
  include BundlerHelper
10
14
 
11
15
  class DockerContainerBuildFailed < StandardError; end
12
16
  class DockerContainerStartFailed < StandardError; end
17
+ class DockerContainerStopFailed < StandardError; end
13
18
 
14
19
  def run_docker_container(image_name, container_name, mount_points = [], &block)
15
20
 
16
21
  raise DockerContainerBuildFailed, "block is required" if not block
17
22
  raise DockerContainerBuildFailed, "Image name is required" if is_empty?(image_name)
18
23
 
24
+ Dockerun.udebug("Running image '#{image_name}', container '#{container_name}'")
25
+
19
26
  reuse = nil
20
27
 
21
28
  if is_empty?(container_name)
29
+ Dockerun.udebug "Container name empty. Creating new container"
22
30
  container_name = block.call(:new_container_name)
23
31
  loop do
24
32
  st, _ = is_container_exist?(container_name)
@@ -32,22 +40,24 @@ module Dockerun
32
40
  end
33
41
 
34
42
  else
35
- st, _ = is_container_exist?(container_name)
36
- if st
37
- reuse = true
38
- else
39
- # if not found shall drop into the next block's else clause
40
- end
43
+ reuse, _ = is_container_exist?(container_name)
44
+ Dockerun.udebug "Container name not empty. Is container exist? : #{reuse}"
45
+ #if st
46
+ # reuse = true
47
+ #else
48
+ # # if not found shall drop into the next block's else clause
49
+ #end
41
50
  end
42
51
 
43
52
  if reuse == true
44
53
 
45
- #
46
- # container already exist so no configuration is required
47
- #
48
- res = dcFact.find_running_container(container_name).run
49
- if not res.failed? and res.is_out_stream_empty?
54
+ Dockerun.udebug "Find out of container '#{container_name}' is running..."
55
+ #res = dcFact.find_running_container(container_name).run
56
+ #if not res.failed? and res.is_out_stream_empty?
57
+ st, _ = is_container_running?(container_name)
58
+ if not st
50
59
  # not running
60
+ Dockerun.udebug "Container '#{container_name}' does not seems to be running. Starting container."
51
61
  ress = dcFact.start_container(container_name).run
52
62
  raise DockerContainerStartFailed, "Failed to start container '#{container_name}'. Error was : #{ress.err_stream}" if ress.failed?
53
63
  end
@@ -149,7 +159,6 @@ module Dockerun
149
159
  res = dcFact.find_from_all_container("^#{name}\\z").run
150
160
  raise DockerContainerBuildFailed, "Failed to find container. Error was : #{res.err_stream}" if res.failed?
151
161
 
152
- p res.out_stream
153
162
  if res.is_out_stream_empty?
154
163
  # nothing found
155
164
  [false, ""]
@@ -168,6 +177,27 @@ module Dockerun
168
177
 
169
178
  end
170
179
 
180
+ def is_container_running?(name)
181
+ if not_empty?(name)
182
+ res = dcFact.find_running_container("^#{name}\\z").run
183
+ raise DockerContainerBuildFailed, "Failed to find is running container. Error was : #{res.err_stream}" if res.failed?
184
+
185
+ if res.is_out_stream_empty?
186
+ # nothing found
187
+ [false, ""]
188
+ else
189
+ [true, res.out_stream]
190
+ end
191
+ else
192
+ [false, nil]
193
+ end
194
+ end
195
+
196
+ def stop_container(name)
197
+ res = dcFact.stop_container(name).run
198
+ raise DockerContainerStopFailed, "Failed to stop docker container '#{name}'. Error was : #{res.err_stream}" if res.failed?
199
+ end
200
+
171
201
 
172
202
  end
173
203
  end
@@ -6,6 +6,10 @@ require_relative 'template/template_writer'
6
6
 
7
7
  module Dockerun
8
8
  module CommandHelper
9
+
10
+ #
11
+ # common functions for docker image management
12
+ #
9
13
  module DockerImageHelper
10
14
  include CliHelper::CliPrompt
11
15
  include DockerCommandFactoryHelper
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dockerun
4
- VERSION = "0.2.3"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/dockerun.rb CHANGED
@@ -15,6 +15,7 @@ require_relative 'dockerun/command/reset_image'
15
15
  require_relative 'dockerun/command/run_new_container'
16
16
  require_relative 'dockerun/command/remove_container'
17
17
  require_relative 'dockerun/command/run_new_image'
18
+ require_relative 'dockerun/command/stop_container'
18
19
 
19
20
  require_relative 'dockerun/template/template_writer'
20
21
  require_relative 'dockerun/template/template_engine'
@@ -22,4 +23,21 @@ require_relative 'dockerun/template/template_engine'
22
23
  module Dockerun
23
24
  class Error < StandardError; end
24
25
  # Your code goes here...
26
+
27
+ def self.udebug(msg)
28
+ logger.tdebug(:dockerun, msg) if is_user_debug_on?
29
+ end
30
+
31
+ def self.logger
32
+ if @_logger.nil?
33
+ @_logger = TeLogger::Tlogger.new
34
+ end
35
+ @_logger
36
+ end
37
+
38
+ def self.is_user_debug_on?
39
+ val = ENV["DOCKERUN_DEBUG"]
40
+ (not val.nil? and val == "true")
41
+ end
42
+
25
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockerun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian
@@ -14,30 +14,30 @@ dependencies:
14
14
  name: toolrack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.19.1
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.19.1
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: teLogger
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.0
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.0
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: tty-command
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.1.2
89
+ version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 0.1.2
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: devops_assist
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -137,6 +137,7 @@ files:
137
137
  - lib/dockerun/command/run.rb
138
138
  - lib/dockerun/command/run_new_container.rb
139
139
  - lib/dockerun/command/run_new_image.rb
140
+ - lib/dockerun/command/stop_container.rb
140
141
  - lib/dockerun/config.rb
141
142
  - lib/dockerun/docker_command_factory_helper.rb
142
143
  - lib/dockerun/docker_container_helper.rb