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