class Docktor::DockerClient

Constants

CONTAINER_NAME_PREFIX

Public Instance Methods

container_exists?(container) click to toggle source
# File lib/docktor/docker_client.rb, line 5
def container_exists?(container)
  `docker ps --all --quiet --filter name=#{container_name(container.name)}`.present?
end
run(container) click to toggle source
# File lib/docktor/docker_client.rb, line 9
def run(container)
  `docker run --name #{container_name(container.name)} #{parse_options(container.options)} #{container.image} #{container.command}`
end
start(container) click to toggle source
# File lib/docktor/docker_client.rb, line 13
def start(container)
  `docker start #{container_name(container.name)}`
end

Private Instance Methods

container_name(name) click to toggle source
# File lib/docktor/docker_client.rb, line 33
def container_name(name)
  CONTAINER_NAME_PREFIX + name
end
parse_options(options) click to toggle source
# File lib/docktor/docker_client.rb, line 19
def parse_options(options)
  options.map do |name, value|
    case name
    when :detach then "--detach=#{value}"
    when :volumes then "--volume #{value.join(" ")}"
    when :ports then "--publish #{value.join(" ")}"
    when :links
      value.map { |v| "--link #{container_name(v)}" }.join(" ")
    when :environment
      "--env #{value.map { |k, v| %(#{k}="#{v}") }.join(" ")}"
    end
  end.join(" ").strip
end