module Kapten::DockerApi
Public Class Methods
destroy(name)
click to toggle source
Fully remove container
# File lib/kapten/docker.rb, line 129 def self.destroy(name) container = Kapten::DockerApi::get_container(name) if container container.stop container.delete(:force => true) return true end return false end
get_container(name)
click to toggle source
Get Docker container by Kapten
name
# File lib/kapten/docker.rb, line 26 def self.get_container(name) begin container = Docker::Container.get('kapten_' + name) return container rescue return false end end
get_image(image)
click to toggle source
Get Docker image by name
# File lib/kapten/docker.rb, line 43 def self.get_image(image) begin image = Docker::Image.get( image ) return image rescue return false end end
has_docker?()
click to toggle source
Check if Docker is installed
# File lib/kapten/docker.rb, line 7 def self.has_docker? begin version = Docker.version return true if version rescue return false end return false end
start(name, image)
click to toggle source
Start Docker container, attaches STDIN and STDOUT
# File lib/kapten/docker.rb, line 60 def self.start(name, image) container = Kapten::DockerApi::get_container(name) if not container # Pull image if not installed docker_image = Kapten::DockerApi::get_image( image ) unless docker_image puts "First time running, installing environment (this might take a few minutes)...".green docker_image = Docker::Image.create( 'fromImage' => image ) end puts "Creating environment...".green container = Docker::Container.create( 'Image' => image, 'name' => 'kapten_' + name, 'Hostname' => name, 'Cmd' => ['/bin/bash'], "OpenStdin" => true, "StdinOnce" => true, "Tty" => true, "WorkingDir" => "/usr/src/" + name, "Hostconfig" => { "Binds" => [Dir.pwd + ":/usr/src/" + name] } ) end container.start puts "---------------------------------".green puts 'Kapten: You\'re now inside the development environment, go wild! (use "exit" to get out of here)'.green # Connect to container shell with both STDIN and STDOUT require "io/console" STDIN.raw do |stdin| container.exec(["bash"], stdin: stdin, tty: true) do |chunk| print chunk end end end
stop(name)
click to toggle source
Stop running container
# File lib/kapten/docker.rb, line 112 def self.stop(name) container = Kapten::DockerApi::get_container(name) if container container.stop return true end return false end