Class: Dapp::StageImage
Overview
Instance Attribute Summary
Attributes inherited from DockerImage
#from, #name
Instance Method Summary
collapse
Methods inherited from DockerImage
#id, #info, #pull!, #pulled?, #push!, #tagged?, #untag!
included, #shellout, #shellout!
Constructor Details
#initialize(name:, built_id: nil, from: nil) ⇒ StageImage
Returns a new instance of StageImage.
4
5
6
7
8
9
10
|
# File 'lib/dapp/stage_image.rb', line 4
def initialize(name:, built_id: nil, from: nil)
@bash_commands = []
@options = {}
@container_name = SecureRandom.hex
@built_id = built_id
super(name: name, from: from)
end
|
Instance Method Details
#add_commands(*commands) ⇒ Object
32
33
34
|
# File 'lib/dapp/stage_image.rb', line 32
def add_commands(*commands)
@bash_commands += commands.flatten
end
|
#add_env(value) ⇒ Object
24
25
26
|
# File 'lib/dapp/stage_image.rb', line 24
def add_env(value)
add_option(:env, value)
end
|
#add_expose(value) ⇒ Object
12
13
14
|
# File 'lib/dapp/stage_image.rb', line 12
def add_expose(value)
add_option(:expose, value)
end
|
#add_volume(value) ⇒ Object
16
17
18
|
# File 'lib/dapp/stage_image.rb', line 16
def add_volume(value)
add_option(:volume, value)
end
|
#add_volumes_from(value) ⇒ Object
20
21
22
|
# File 'lib/dapp/stage_image.rb', line 20
def add_volumes_from(value)
add_option(:'volumes-from', value)
end
|
#add_workdir(value) ⇒ Object
28
29
30
|
# File 'lib/dapp/stage_image.rb', line 28
def add_workdir(value)
add_option(:workdir, value)
end
|
#build!(log_verbose: false, log_time: false) ⇒ Object
40
41
42
43
44
45
|
# File 'lib/dapp/stage_image.rb', line 40
def build!(log_verbose: false, log_time: false)
run!(log_verbose: log_verbose, log_time: log_time)
@built_id = commit!
ensure
shellout("docker rm #{container_name}")
end
|
#built_id ⇒ Object
36
37
38
|
# File 'lib/dapp/stage_image.rb', line 36
def built_id
@built_id ||= id
end
|
#export!(name, log_verbose: false, log_time: false) ⇒ Object
47
48
49
50
51
52
|
# File 'lib/dapp/stage_image.rb', line 47
def export!(name, log_verbose: false, log_time: false)
image = self.class.new(built_id: built_id, name: name)
image.tag!(log_verbose: log_verbose, log_time: log_time)
image.push!(log_verbose: log_verbose, log_time: log_time)
image.untag!
end
|
#tag!(log_verbose: false, log_time: false) ⇒ Object
54
55
56
57
58
59
60
|
# File 'lib/dapp/stage_image.rb', line 54
def tag!(log_verbose: false, log_time: false)
unless (existed_id = id).nil?
fail Error::Build, code: :image_already_tagged if built_id != existed_id
return
end
shellout!("docker tag #{built_id} #{name}", log_verbose: log_verbose, log_time: log_time)
end
|