lib/jarl/docker.rb in jarl-0.2.0 vs lib/jarl/docker.rb in jarl-0.3.0
- old
+ new
@@ -91,10 +91,12 @@
end
# Start container defined by params
#
def self.start(params)
+ container_name = params[:name]
+ Docker::Container.clean_containers(container_name)
opts = []
opts << params[:volumes].map do |v|
"-v #{v}"
end.join(' ')
opts << params[:ports].map do |p|
@@ -102,16 +104,38 @@
end.join(' ')
opts << params[:environment].map do |k, v|
"-e #{k}=#{v}"
end.join(' ')
docker_cmd = "docker run -d #{opts.join(' ')} " \
- " --hostname #{params[:name]} " \
- " --name #{params[:name]} #{params[:image]} #{params[:command]}"
+ " --hostname #{params[:hostname]} " \
+ " --name #{container_name} #{params[:image]} #{params[:command]}"
# puts docker_cmd
sh docker_cmd
end
+ # 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(' ')} " \
+ " --hostname #{params[:hostname]} " \
+ " --name #{container_name} #{params[:image]} #{params[:command]}"
+ # puts docker_cmd
+ sh docker_cmd
+ end
+
# Image
#
class Image
attr_accessor :name, :path
@@ -193,12 +217,19 @@
@ports = port_maps.keys.map do |port|
{ from: port, to: port_maps[port] }
end
end
- def open_ssh_session!
- ssh_flags = "-oStrictHostKeyChecking=no -i #{INSECURE_KEY_PATH}"
- sh "ssh #{ssh_flags} root@#{ip}"
+ def open_ssh_session!(params = {})
+ ssh_flags = ['-oStrictHostKeyChecking=no']
+ if params['ssh_identity']
+ ssh_flags << "-i #{params['ssh_identity']}" if params['ssh_identity'].is_a?(String)
+ if params['ssh_identity'].is_a?(Array)
+ ssh_flags << params['ssh_identity'].map { |i| "-i #{i}" }
+ end
+ end
+ ssh_user = params['ssh_user'] ? "#{params['ssh_user']}@" : ''
+ sh "ssh #{ssh_flags.join(' ')} #{ssh_user}#{ip}"
end
def stop!
sh "docker stop #{name}"
clean!