lib/minke/docker/docker_runner.rb in minke-1.12.9 vs lib/minke/docker/docker_runner.rb in minke-1.13.0

- old
+ new

@@ -1,10 +1,11 @@ module Minke module Docker class DockerRunner - def initialize network = nil + def initialize logger, network = nil @network = network ||= 'bridge' + @logger = logger end ## # returns the ip address that docker is running on def get_docker_ip_address @@ -41,11 +42,11 @@ end ## # pull_image pulls a new copy of the given image from the registry def pull_image image_name - puts "Pulling Image: #{image_name}" + @logger.debug "Pulling Image: #{image_name}" ::Docker.options = {:chunk_size => 1, :read_timeout => 3600} ::Docker::Image.create('fromImage' => image_name) end ## @@ -77,51 +78,51 @@ 'NetworkMode' => @network, 'name' => args[:name], 'PublishAllPorts' => true ) - success = true + output = '' unless args[:deamon] == true thread = Thread.new do container.attach(:stream => true, :stdin => nil, :stdout => true, :stderr => true, :logs => false, :tty => false) do |stream, chunk| - stream.to_s == 'stdout' ? color = :green : color = :red - puts "#{chunk.strip}".colorize(color) - - if stream.to_s == "stderr" - success = false + if chunk.index('[ERROR]') != nil # deal with hidden characters + @logger.error chunk.gsub!(/\[.*\]/,'') else - success = true + output += chunk.gsub!(/\[.*\]/,'') if output == '' + output += chunk.gsub!(/\[.*\]/,'').prepend(" ") unless output == '' + @logger.debug chunk.gsub!(/\[.*\]/,'') end end end end container.start thread.join unless args[:deamon] == true + success = (container.json['State']['ExitCode'] == 0) ? true: false + @logger.error(output) unless success + return container, success end ## # build_image creates a new image from the given Dockerfile and name def build_image dockerfile_dir, name - puts dockerfile_dir - puts name ::Docker.options = {:read_timeout => 6200} begin ::Docker::Image.build_from_dir(dockerfile_dir, {:t => name}) do |v| data = /{"stream.*:"(.*)".*/.match(v) data = data[1].encode(Encoding.find('UTF-8'), {invalid: :replace, undef: :replace, replace: ''}) unless data == nil || data.length < 1 $stdout.puts data unless data == nil end rescue => e - puts e + @logger.error e message = /.*{"message":"(.*?)"}/.match(e.to_s) - puts "Error: #{message[1]}" unless message == nil || message.length < 1 + @logger.error "Error: #{message[1]}" unless message == nil || message.length < 1 end end def stop_container container container.stop() @@ -130,10 +131,10 @@ def delete_container container if container != nil begin container.delete() rescue => e - puts "Error: Unable to delete container: #{e}" + @logger.error "Error: Unable to delete container: #{e}" end end end def login_registry url, user, password, email