Module: Kapten::DockerApi
- Defined in:
- lib/kapten/docker.rb
Class Method Summary collapse
-
.destroy(name) ⇒ Object
Fully remove container.
-
.get_container(name) ⇒ Object
Get Docker container by Kapten name.
-
.get_image(image) ⇒ Object
Get Docker image by name.
-
.has_docker? ⇒ Boolean
Check if Docker is installed.
-
.start(name, image) ⇒ Object
Start Docker container, attaches STDIN and STDOUT.
-
.stop(name) ⇒ Object
Stop running container.
Class Method Details
.destroy(name) ⇒ Object
Fully remove container
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# 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) ⇒ Object
Get Docker container by Kapten name
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# 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) ⇒ Object
Get Docker image by name
43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# 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? ⇒ Boolean
Check if Docker is installed
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# 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) ⇒ Object
Start Docker container, attaches STDIN and STDOUT
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# 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) ⇒ Object
Stop running container
112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# 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 |