class DockerRailsProxy::Build

Attributes

options[RW]

Public Instance Methods

process() click to toggle source
# File lib/docker_rails_proxy/commands/build.rb, line 38
    def process
      system <<-EOS
        docker build \
          -f '#{options[:dockerfile]}' \
          -t '#{options[:tag]}' \
          #{build_args} \
          '#{options[:context]}'
      EOS
    end

Private Instance Methods

build_args() click to toggle source
# File lib/docker_rails_proxy/commands/build.rb, line 50
def build_args
  options[:build_args].map do |k, v|
    "--build-arg #{k.upcase}='#{v.strip}'"
  end.join(' ')
end
opt_parser() click to toggle source
# File lib/docker_rails_proxy/commands/build.rb, line 64
def opt_parser
  @opt_parser ||= OptionParser.new do |opts|
    opts.banner = "Usage: bin/#{APP_NAME} build [options]"

    opts.on('--dockerfile DOCKERFILE', 'Dockerfile') do |dockerfile|
      options[:dockerfile] = dockerfile
    end

    opts.on('--context [CONTEXT]', 'Docker build context') do |context|
      options[:context] = context
    end

    opts.on('--tag TAG', 'Docker Image Tag') { |tag| options[:tag] = tag }

    opts.on('--build-args A=val,B=val...', Array, 'Docker build-args') do |o|
      options[:build_args] = Hash[o.map { |s| s.split('=', 2) }]
    end

    opts.on('-h', '--help', 'Display this screen') do
      puts opts
      exit
    end
  end
end
parse_options!() click to toggle source
# File lib/docker_rails_proxy/commands/build.rb, line 60
def parse_options!
  opt_parser.parse!(arguments)
end
set_defaults() click to toggle source
# File lib/docker_rails_proxy/commands/build.rb, line 56
def set_defaults
  options[:context] ||= File.dirname(options[:dockerfile])
end