Class: Dapp::Image::Docker
Overview
Direct Known Subclasses
Stage
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
included, #shellout, #shellout!, #shellout_pack
Constructor Details
#initialize(name:, from: nil) ⇒ Docker
Returns a new instance of Docker.
11
12
13
14
|
# File 'lib/dapp/image/docker.rb', line 11
def initialize(name:, from: nil)
@from = from
@name = name
end
|
Instance Attribute Details
#from ⇒ Object
Returns the value of attribute from.
8
9
10
|
# File 'lib/dapp/image/docker.rb', line 8
def from
@from
end
|
#name ⇒ Object
Returns the value of attribute name.
9
10
11
|
# File 'lib/dapp/image/docker.rb', line 9
def name
@name
end
|
Class Method Details
.cache ⇒ Object
63
64
65
|
# File 'lib/dapp/image/docker.rb', line 63
def cache
@cache ||= (@cache = {}).tap { cache_reset }
end
|
.cache_reset(name = '') ⇒ Object
67
68
69
70
71
72
|
# File 'lib/dapp/image/docker.rb', line 67
def cache_reset(name = '')
shellout!("docker images --format='{{.Repository}}:{{.Tag}};{{.ID}};{{.CreatedAt}};{{.Size}}' #{name}").stdout.lines.each do |line|
name, id, created_at, size = line.split(';')
cache[name] = { id: id, created_at: created_at, size: size }
end
end
|
Instance Method Details
#id ⇒ Object
16
17
18
|
# File 'lib/dapp/image/docker.rb', line 16
def id
@id || cache[:id]
end
|
#info ⇒ Object
46
47
48
49
|
# File 'lib/dapp/image/docker.rb', line 46
def info
raise Error::Build, code: :image_not_exist, data: { name: name } unless tagged?
[cache[:created_at], cache[:size]]
end
|
#pull!(log_verbose: false, log_time: false) ⇒ Object
31
32
33
34
35
36
|
# File 'lib/dapp/image/docker.rb', line 31
def pull!(log_verbose: false, log_time: false)
return if tagged?
shellout!("docker pull #{name}", log_verbose: log_verbose, log_time: log_time)
@pulled = true
cache_reset
end
|
#pulled? ⇒ Boolean
42
43
44
|
# File 'lib/dapp/image/docker.rb', line 42
def pulled?
!!@pulled
end
|
#push!(log_verbose: false, log_time: false) ⇒ Object
26
27
28
29
|
# File 'lib/dapp/image/docker.rb', line 26
def push!(log_verbose: false, log_time: false)
raise Error::Build, code: :image_not_exist, data: { name: name } unless tagged?
shellout!("docker push #{name}", log_verbose: log_verbose, log_time: log_time)
end
|
#tagged? ⇒ Boolean
38
39
40
|
# File 'lib/dapp/image/docker.rb', line 38
def tagged?
!!id
end
|
#untag! ⇒ Object
20
21
22
23
24
|
# File 'lib/dapp/image/docker.rb', line 20
def untag!
raise Error::Build, code: :image_already_untagged, data: { name: name } unless tagged?
shellout!("docker rmi #{name}")
cache_reset
end
|