lib/jarl/docker.rb in jarl-0.8.3 vs lib/jarl/docker.rb in jarl-0.9.0
- old
+ new
@@ -96,26 +96,40 @@
rescue RuntimeError => e
# omit conflicting images error reports
raise unless e.to_s =~ /Command failed/
end
- # Start container defined by params
+ # Construct options string for running a container
#
- def self.start(params)
- container_name = params[:name]
- Docker::Container.clean_containers(container_name)
+ def self.run_options(params)
opts = []
opts << params[:volumes].map do |v|
"-v #{v}"
end.join(' ')
opts << params[:ports].map do |p|
"-p #{p}"
end.join(' ')
opts << params[:environment].map do |k, v|
"-e #{k}='#{v}'"
end.join(' ')
- docker_cmd = "docker run -d #{opts.join(' ')} " \
+ if params[:logging] && params[:logging][:driver]
+ opts << "--log-driver #{params[:logging][:driver]}"
+ end
+ if params[:logging] && params[:logging][:options]
+ opts << params[:logging][:options].map do |k, v|
+ "--log-opt #{k}='#{v}'"
+ end.join(' ')
+ end
+ opts.join(' ')
+ end
+
+ # Start container defined by params
+ #
+ def self.start(params)
+ container_name = params[:name]
+ Docker::Container.clean_containers(container_name)
+ docker_cmd = "docker run -d #{run_options(params)} " \
" --hostname #{params[:hostname]} " \
" --name #{container_name} #{params[:image]} #{params[:command]}"
# puts docker_cmd
sh docker_cmd
end
@@ -123,20 +137,10 @@
# Execute container in foreground, defined by params
#
def self.execute(params)
container_name = "#{params[:name]}.execute"
Docker::Container.clean_containers(container_name)
- opts = []
- opts << params[:volumes].map do |v|
- "-v #{v}"
- end.join(' ')
- opts << params[:ports].map do |p|
- "-p #{p}"
- end.join(' ')
- opts << params[:environment].map do |k, v|
- "-e #{k}='#{v}'"
- end.join(' ')
- docker_cmd = "docker run -t -i --rm #{opts.join(' ')} " \
+ docker_cmd = "docker run -t -i --rm #{run_options(params)} " \
" --hostname #{params[:hostname]} " \
" --name #{container_name} #{params[:image]} #{params[:command]}"
# puts docker_cmd
sh docker_cmd
end