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)