Module: Pygmy::DockerService
Instance Method Summary collapse
- #container_exists?(container_name = self.container_name) ⇒ Boolean
- #delete(container_name = self.container_name) ⇒ Object
- #has_docker_client? ⇒ Boolean
- #ps(all = false) ⇒ Object
- #running?(container_name = self.container_name) ⇒ Boolean
- #start ⇒ Object
- #start_cmd ⇒ Object
- #stop(container_name = self.container_name) ⇒ Object
Instance Method Details
#container_exists?(container_name = self.container_name) ⇒ Boolean
25 26 27 |
# File 'lib/pygmy/docker_service.rb', line 25 def container_exists?(container_name = self.container_name) !!(self.ps(true) =~ /#{container_name}/) end |
#delete(container_name = self.container_name) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/pygmy/docker_service.rb', line 48 def delete(container_name = self.container_name) if self.container_exists? self.stop if self.running? Sh.run_command("docker rm #{Shellwords.escape(container_name)}") end !self.container_exists? end |
#has_docker_client? ⇒ Boolean
39 40 41 |
# File 'lib/pygmy/docker_service.rb', line 39 def has_docker_client? Sh.run_command('which docker').success? end |
#ps(all = false) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/pygmy/docker_service.rb', line 29 def ps(all = false) cmd = "docker ps#{all ? ' -a' : ''}" ret = Sh.run_command(cmd) if ret.success? return ret.stdout else raise RuntimeError.new("Failure running command '#{cmd}'") end end |
#running?(container_name = self.container_name) ⇒ Boolean
21 22 23 |
# File 'lib/pygmy/docker_service.rb', line 21 def running?(container_name = self.container_name) !!(self.ps =~ /#{container_name}/) end |
#start ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/pygmy/docker_service.rb', line 5 def start unless self.running? success = if self.container_exists? Sh.run_command(self.start_cmd).success? else Sh.run_command(self.run_cmd).success? end unless success raise RuntimeError.new( "Failed to run #{self.container_name}. Command #{self.run_cmd} failed" ) end end self.running? end |
#start_cmd ⇒ Object
56 57 58 |
# File 'lib/pygmy/docker_service.rb', line 56 def start_cmd "docker start #{Shellwords.escape(self.container_name)}" end |
#stop(container_name = self.container_name) ⇒ Object
43 44 45 46 |
# File 'lib/pygmy/docker_service.rb', line 43 def stop(container_name = self.container_name) Sh.run_command("docker kill #{Shellwords.escape(container_name)}") if self.running? !self.running? end |