Class: Vader::DockerUtil

Inherits:
Object
  • Object
show all
Defined in:
lib/vader/docker_util.rb

Class Method Summary collapse

Class Method Details

.docker_configured?Boolean

Can we open a tcp socket to DOCKER_HOST?

Returns:

  • (Boolean)


38
39
40
41
42
43
44
45
# File 'lib/vader/docker_util.rb', line 38

def docker_configured?
  return false unless ENV['DOCKER_HOST']
  uri = URI.parse(ENV['DOCKER_HOST'])
  TCPSocket.new(uri.host, uri.port).close
  return true
rescue Errno::ECONNREFUSED
  false
end

.ensure_boot2docker_runningObject



18
19
20
21
22
23
24
25
26
# File 'lib/vader/docker_util.rb', line 18

def ensure_boot2docker_running
  if `boot2docker status`.chomp != 'running'
    puts "Starting boot2docker"
    `boot2docker up 2>/dev/null >/dev/null`
    unless $?.success?
      raise "Failed to start boot2docker. Try running 'boot2docker up'"
    end
  end
end

.ensure_docker_configuredObject



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/vader/docker_util.rb', line 6

def ensure_docker_configured
  # To ensure docker client will work:
  # Check that ENV['DOCKER'] is set and can connect to the DOCKER_HOST.
  # Otherwise, check `boot2docker status`.
  # If b2d isn't running, start it.
  # Get boot2docker ip address and set DOCKER_* env vars.
  return if docker_configured?
  ensure_boot2docker_running
  set_docker_env

end

.set_docker_envObject



28
29
30
31
32
33
34
35
# File 'lib/vader/docker_util.rb', line 28

def set_docker_env
  puts "Setting boot2docker environment variables"
  `boot2docker shellinit 2>/dev/null`.split("\n").each do |line|
    match = line.match(/(DOCKER\w+)=(.+)\Z/)
    next unless match
    ENV[match[1]] = match[2]
  end
end