Sha256: 60d4f22e8d788003d9611e05bf5fcc0782a2c2399f70b15d9bbe9276afb99427

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

module Docktor
  class DockerClient
    CONTAINER_NAME_PREFIX = "docktor_"

    def container_exists?(container)
      `docker ps -aqf name=#{container_name(container.name)}` != ""
    end

    def run(container)
      puts "docker run -d --name #{container_name(container.name)} #{parse_options(container.options)} #{container.image} #{container.command}"
      `docker run -d --name #{container_name(container.name)} #{parse_options(container.options)} #{container.image} #{container.command}`
    end

    def start(container)
      `docker start #{container_name(container.name)}`
    end

    def parse_options(options)
      options.map do |name, value|
        case name
        when :volumes then "-v #{value.join(" ")}"
        when :ports then "-p #{value.join(" ")}"
        when :links then "--link #{value.join(" ")}"
          value.map { |v| "--link #{container_name(v)}" }.join(" ")
        when :environment
          "-e #{value.map { |k, v| %(#{k}="#{v}") }.join(" ")}"
        end
      end.join(" ").strip
    end

    def container_name(name)
      CONTAINER_NAME_PREFIX + name
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
docktor-0.1.0 lib/docktor/docker_client.rb