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!