Module: Pygmy::DockerService

Included in:
Amazee, Dnsmasq, DockerNetwork, Haproxy, Mailhog, SshAgent, Traefik
Defined in:
lib/pygmy/docker_service.rb

Instance Method Summary collapse

Instance Method Details

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

Returns:

  • (Boolean)


35
36
37
# File 'lib/pygmy/docker_service.rb', line 35

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

#delete(container_name = self.container_name) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/pygmy/docker_service.rb', line 58

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)


49
50
51
# File 'lib/pygmy/docker_service.rb', line 49

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

#ps(all = false) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/pygmy/docker_service.rb', line 39

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

#pullObject



21
22
23
24
25
26
27
28
29
# File 'lib/pygmy/docker_service.rb', line 21

def pull
  puts "Pulling Docker Image #{Shellwords.escape(self.image_name)}".yellow
  success = Sh.run_command("docker pull #{Shellwords.escape(self.image_name)}").success?
  unless success
    raise RuntimeError.new(
      "Failed to update #{self.container_name}.  Command #{self.pull_cmd} failed"
    )
  end
end

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

Returns:

  • (Boolean)


31
32
33
# File 'lib/pygmy/docker_service.rb', line 31

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



66
67
68
# File 'lib/pygmy/docker_service.rb', line 66

def start_cmd
  "docker start #{Shellwords.escape(self.container_name)}"
end

#stop(container_name = self.container_name) ⇒ Object



53
54
55
56
# File 'lib/pygmy/docker_service.rb', line 53

def stop(container_name = self.container_name)
  Sh.run_command("docker stop -t 1 #{Shellwords.escape(container_name)}") if self.running?
  !self.running?
end