Class: Indocker::Images::ImageBuilder
- Inherits:
-
Object
- Object
- Indocker::Images::ImageBuilder
- Defined in:
- lib/indocker/images/image_builder.rb
Instance Attribute Summary collapse
-
#image ⇒ Object
readonly
Returns the value of attribute image.
Instance Method Summary collapse
- #after_build(proc) ⇒ Object
- #before_build(proc) ⇒ Object
- #build_args(opts) ⇒ Object
- #build_context(path) ⇒ Object
- #compile(flag_or_file_paths) ⇒ Object
- #depends_on(*image_list) ⇒ Object
- #dockerfile(path) ⇒ Object
-
#initialize(name:, configuration:, dir:) ⇒ ImageBuilder
constructor
A new instance of ImageBuilder.
- #registry(name) ⇒ Object
- #tag(tag) ⇒ Object
Constructor Details
#initialize(name:, configuration:, dir:) ⇒ ImageBuilder
Returns a new instance of ImageBuilder.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/indocker/images/image_builder.rb', line 4 def initialize(name:, configuration:, dir:) @configuration = configuration @image = Indocker::Images::Image.new(name) dockerfile = File.join(dir, 'Dockerfile') if File.exist?(dockerfile) @image.set_dockerfile(dockerfile) end build_context = File.join(dir, 'build_context') if Dir.exist?(build_context) @image.set_build_context(build_context) end @image.set_tag('latest') @configuration.add_image(@image) end |
Instance Attribute Details
#image ⇒ Object (readonly)
Returns the value of attribute image.
2 3 4 |
# File 'lib/indocker/images/image_builder.rb', line 2 def image @image end |
Instance Method Details
#after_build(proc) ⇒ Object
99 100 101 102 |
# File 'lib/indocker/images/image_builder.rb', line 99 def after_build(proc) @image.set_after_build(proc) self end |
#before_build(proc) ⇒ Object
94 95 96 97 |
# File 'lib/indocker/images/image_builder.rb', line 94 def before_build(proc) @image.set_before_build(proc) self end |
#build_args(opts) ⇒ Object
23 24 25 26 |
# File 'lib/indocker/images/image_builder.rb', line 23 def build_args(opts) @image.set_build_args(opts) self end |
#build_context(path) ⇒ Object
85 86 87 88 89 90 91 92 |
# File 'lib/indocker/images/image_builder.rb', line 85 def build_context(path) if !File.directory?(path) raise ArgumentError.new("No directory found in #{path}") end @image.set_build_context(path) self end |
#compile(flag_or_file_paths) ⇒ Object
46 47 48 49 |
# File 'lib/indocker/images/image_builder.rb', line 46 def compile(flag_or_file_paths) @image.set_compile(flag_or_file_paths) self end |
#depends_on(*image_list) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/indocker/images/image_builder.rb', line 51 def depends_on(*image_list) if !image_list.is_a?(Array) image_list = [image_list] end image_list.uniq! image_list.each do |name| path = Indocker.image_files.fetch(name) do Indocker.logger.error("Dependent image :#{name} was not found in bounded contexts dir for image :#{@image.name}") exit 1 end require path end images = image_list.map do |image_sym| @configuration.images.detect do |i| i.name == image_sym end end images.each do |image| @image.add_dependent_image(image) end self end |
#dockerfile(path) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/indocker/images/image_builder.rb', line 37 def dockerfile(path) if !File.exist?(path) raise ArgumentError.new("Dockerfile was not found in #{path}") end @image.set_dockerfile(path) self end |
#registry(name) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/indocker/images/image_builder.rb', line 28 def registry(name) registry = @configuration.registries.fetch(name) do raise ArgumentError.new("registry with alias name :#{name} is not defined in configuration :#{@configuration.name}") end @image.set_registry(registry) self end |
#tag(tag) ⇒ Object
80 81 82 83 |
# File 'lib/indocker/images/image_builder.rb', line 80 def tag(tag) @image.set_tag(tag) self end |