Module: Dory::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
33 34 35 |
# File 'lib/dory/docker_service.rb', line 33 def container_exists?(container_name = self.container_name) !!(self.ps(all: true) =~ /#{container_name}/) end |
#delete(container_name = self.container_name) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/dory/docker_service.rb', line 56 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
47 48 49 |
# File 'lib/dory/docker_service.rb', line 47 def has_docker_client? Sh.run_command('which docker').success? end |
#ps(all: false) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/dory/docker_service.rb', line 37 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
29 30 31 |
# File 'lib/dory/docker_service.rb', line 29 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 20 21 22 23 24 25 26 27 |
# File 'lib/dory/docker_service.rb', line 5 def start unless self.running? success = if self.container_exists? if Dory::Config.debug? puts "[DEBUG] Container '#{self.container_name}' already exists. " \ "Starting with '#{self.start_cmd}'" end Sh.run_command(self.start_cmd).success? else if Dory::Config.debug? puts "[DEBUG] Container '#{self.container_name}' does not exist. " \ "Creating/starting with '#{self.run_cmd}'" end 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
64 65 66 |
# File 'lib/dory/docker_service.rb', line 64 def start_cmd "docker start #{Shellwords.escape(self.container_name)}" end |
#stop(container_name = self.container_name) ⇒ Object
51 52 53 54 |
# File 'lib/dory/docker_service.rb', line 51 def stop(container_name = self.container_name) Sh.run_command("docker kill #{Shellwords.escape(container_name)}") if self.running? !self.running? end |