class Compose

Attributes

containers[R]

Public Class Methods

new() click to toggle source
# File lib/docker-compose/models/compose.rb, line 8
def initialize
  @containers = {}
end

Public Instance Methods

add_container(container) click to toggle source

Add a new container to compose

# File lib/docker-compose/models/compose.rb, line 17
def add_container(container)
  # Avoid duplicated labels on compose
  while @containers.has_key?(container.attributes[:label]) do
    container.attributes[:label].succ!
  end

  @containers[container.attributes[:label]] = container
  true
end
delete(labels = []) click to toggle source

Delete a container

This method accepts an array of labels. If labels is informed, only those containers with label present in array will be deleted. Otherwise, all containers are deleted

# File lib/docker-compose/models/compose.rb, line 102
def delete(labels = [])
  call_container_method(:delete, labels)
  delete_containers_entries(labels)
end
get_containers_by(params) click to toggle source

Select containers based on attributes given by “params”

# File lib/docker-compose/models/compose.rb, line 30
def get_containers_by(params)
  @containers.values.select do |container|
    (params.to_a - container.attributes.to_a).empty?
  end
end
get_containers_by_given_name(given_name) click to toggle source

Select containers based on its given name (ignore basename)

# File lib/docker-compose/models/compose.rb, line 40
def get_containers_by_given_name(given_name)
  @containers.select { |label, container|
    container.attributes[:name].match(/#{ComposeUtils.dir_name}_#{given_name}_\d+/)
  }.values
end
kill(labels = []) click to toggle source

Kill a container

This method accepts an array of labels. If labels is informed, only those containers with label present in array will be killed. Otherwise, all containers are killed

# File lib/docker-compose/models/compose.rb, line 91
def kill(labels  = [])
  call_container_method(:kill, labels)
end
start(labels = []) click to toggle source

Start a container

This method accepts an array of labels. If labels is informed, only those containers with label present in array will be started. Otherwise, all containers are started

# File lib/docker-compose/models/compose.rb, line 69
def start(labels = [])
  call_container_method(:start, labels)
end
stop(labels = []) click to toggle source

Stop a container

This method accepts an array of labels. If labels is informed, only those containers with label present in array will be stopped. Otherwise, all containers are stopped

# File lib/docker-compose/models/compose.rb, line 80
def stop(labels = [])
  call_container_method(:stop, labels)
end

Private Instance Methods

call_container_method(method, labels = []) click to toggle source
# File lib/docker-compose/models/compose.rb, line 109
def call_container_method(method, labels = [])
  labels = @containers.keys if labels.empty?

  containers = @containers.select { |key, value|
    labels.include?(key)
  }

  containers.values.each do |entry|
    entry.send(method)
  end

  true
end
delete_containers_entries(labels = []) click to toggle source
# File lib/docker-compose/models/compose.rb, line 123
def delete_containers_entries(labels = [])
  labels = @containers.keys if labels.empty?

  labels.each do |label|
    @containers.delete(label)
  end

  true
end