lib/docktor/docker_client.rb in docktor-0.1.0 vs lib/docktor/docker_client.rb in docktor-0.2.0

- old
+ new

@@ -1,30 +1,32 @@ module Docktor class DockerClient CONTAINER_NAME_PREFIX = "docktor_" def container_exists?(container) - `docker ps -aqf name=#{container_name(container.name)}` != "" + `docker ps --all --quiet --filter name=#{container_name(container.name)}`.present? 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}` + `docker run --name #{container_name(container.name)} #{parse_options(container.options)} #{container.image} #{container.command}` end def start(container) `docker start #{container_name(container.name)}` end + private + 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(" ")}" + 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 - "-e #{value.map { |k, v| %(#{k}="#{v}") }.join(" ")}" + "--env #{value.map { |k, v| %(#{k}="#{v}") }.join(" ")}" end end.join(" ").strip end def container_name(name)