Module: Pygmy::DockerService

Included in:
Dnsmasq, Haproxy, SshAgent
Defined in:
lib/pygmy/docker_service.rb

Instance Method Summary collapse

Instance Method Details

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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (Boolean)


21
22
23
# File 'lib/pygmy/docker_service.rb', line 21

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

#startObject



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_cmdObject



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