Module: Dory::DockerService

Included in:
Dnsmasq, Proxy
Defined in:
lib/dory/docker_service.rb

Instance Method Summary collapse

Instance Method Details

#container_exists?(container_name = self.container_name) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/dory/docker_service.rb', line 23

def container_exists?(container_name = self.container_name)
  !!(self.ps(all: true) =~ /#{container_name}/)
end

#delete(container_name = self.container_name) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/dory/docker_service.rb', line 46

def delete(container_name = self.container_name)
  if self.container_exists?
    self.stop if self.running?
    Sh.run_command("docker rm #{container_name}")
  end
  !self.container_exists?
end

#has_docker_client?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/dory/docker_service.rb', line 37

def has_docker_client?
  Sh.run_command('which docker').success?
end

#ps(all: false) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/dory/docker_service.rb', line 27

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

Returns:

  • (Boolean)


19
20
21
# File 'lib/dory/docker_service.rb', line 19

def running?(container_name = self.container_name)
  !!(self.ps =~ /#{container_name}/)
end

#startObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/dory/docker_service.rb', line 3

def start
  unless self.running?
    success = if self.container_exists?
                Sh.run_command("docker start #{self.container_name}")
              else
                Sh.run_command(self.run_cmd).success?
              end
    unless success
      raise RuntimeError.new(
        "Failed to run nginx proxy.  Command #{self.run_cmd} failed"
      )
    end
  end
  self.running?
end

#stop(container_name = self.container_name) ⇒ Object



41
42
43
44
# File 'lib/dory/docker_service.rb', line 41

def stop(container_name = self.container_name)
  Sh.run_command("docker kill #{container_name}") if self.running?
  !self.running?
end