class Quay::Container
Public Class Methods
ensure_image(image)
click to toggle source
# File lib/quay/container.rb, line 3 def self.ensure_image(image) Docker::Image.get(image) rescue Docker::Error::NotFoundError Docker::Image.create('fromImage' => image) end
start(name, container_config)
click to toggle source
# File lib/quay/container.rb, line 9 def self.start(name, container_config) state = Quay::State.new env_lookup = Quay::EnvLookup.new(state) env = container_config.fetch(:env, {}).map do |k,v| if v =~ /^\$/ value = env_lookup.get(v) "#{k}=#{value}" else "#{k}=#{v}" end end volumes = container_config.fetch(:volumes, []).map do |host, container, mode| [container, {}] end binds = container_config.fetch(:volumes, []).map do |*args| args.join(":") end opts = { 'Image' => container_config[:image], 'Cmd' => container_config[:cmd], 'WorkingDir' => container_config[:working_dir], 'Volumes' => Hash[volumes], 'Env' => env, } ensure_image(container_config[:image]) container = Docker::Container.create(opts) container.start('Binds' => binds) state.save_container(name, container.id) container end
stop(name, dependency)
click to toggle source
# File lib/quay/container.rb, line 46 def self.stop(name, dependency) state = Quay::State.new id = state.containers[name] return if id.nil? container = Docker::Container.get(id) container.stop state.remove_container(name) container end