module GV::Common::DockerHelper
Constants
- SPAWN_TIMEOUT
Public Instance Methods
batch(pattern, method, wait = false)
click to toggle source
# File lib/gv/common/docker_helper.rb, line 43 def batch pattern, method, wait = false sh "docker ps -a | grep #{pattern} | awk '{ print $1 }' | xargs docker #{method}", {err: "/dev/null"}, wait end
cleanup()
click to toggle source
# File lib/gv/common/docker_helper.rb, line 39 def cleanup batch "Exit", "rm", false end
container_id(name)
click to toggle source
# File lib/gv/common/docker_helper.rb, line 27 def container_id name pipe "docker ps | grep #{name} | awk '{ print $1 }'" end
container_port(name, ip, port)
click to toggle source
# File lib/gv/common/docker_helper.rb, line 31 def container_port name, ip, port pipe "docker port #{container_id(name)} #{port} | sed 's/#{ip}://'" end
info(container_id)
click to toggle source
# File lib/gv/common/docker_helper.rb, line 15 def info container_id JSON.load(pipe("docker inspect #{container_id}")).first rescue nil end
ps(name)
click to toggle source
# File lib/gv/common/docker_helper.rb, line 19 def ps name pipe("docker ps | grep #{name}") end
ps?(name)
click to toggle source
# File lib/gv/common/docker_helper.rb, line 23 def ps? name pipe("docker ps | grep #{name}") =~ /#{name}/ end
pull_image_if_does_not_exists(name)
click to toggle source
# File lib/gv/common/docker_helper.rb, line 35 def pull_image_if_does_not_exists name pipe("docker pull #{name}", &Blocks.stream) unless pipe("docker images") =~ /#{name}/ end
restart_docker!(container_id = nil, sec = 2)
click to toggle source
# File lib/gv/common/docker_helper.rb, line 60 def restart_docker! container_id = nil, sec = 2 pid, status = Process.wait2(spawn("service docker restart")) unless status.success? fatal "docker service cannot restarted, terminating..." raise container_id if container_id else sleep sec end end
sh(cmd, options = {})
click to toggle source
# File lib/gv/common/docker_helper.rb, line 47 def sh cmd, options = {}, wait = true begin ::Timeout::timeout(SPAWN_TIMEOUT) { debug "SH #{cmd}" pid = spawn cmd, options Process.public_send(wait ? :wait : :detach, pid) } rescue ::Timeout::Error,::Timeout::TimeoutError,::Object::TimeoutError restart_docker! sh cmd, options, wait end end