class Minke::Docker::DockerCompose

Public Class Methods

new(compose_file, system_runner, project_name, docker_network = nil) click to toggle source
# File lib/minke/docker/docker_compose.rb, line 18
def initialize compose_file, system_runner, project_name, docker_network = nil
  @project_name = project_name
  @compose_file = compose_file
  @system_runner = system_runner
  @docker_network = docker_network ||= 'bridge'
end

Public Instance Methods

create_compose() click to toggle source
# File lib/minke/docker/docker_compose.rb, line 76
def create_compose
  existing = YAML.load(File.read(@compose_file))
  services = {}

  existing['services'].keys.each do |key|
    newservice = existing['services'][key].merge({'external_links' => ["#{@project_name}_consul_1:consul"]})
    services[key] = newservice
  end

  compose = { 'version' => 2.to_s, 'services' => services }

  compose
end
create_compose_network() click to toggle source
# File lib/minke/docker/docker_compose.rb, line 68
def create_compose_network
  { 'networks' => {'default' => { 'external' => { 'name' => @docker_network } } } }
end
down() click to toggle source

stop the containers in a stack and removes them as defined by the docker compose file

# File lib/minke/docker/docker_compose.rb, line 34
def down
  execute_command "down -v"
end
execute_command(command) click to toggle source
# File lib/minke/docker/docker_compose.rb, line 50
def execute_command command
  hash = create_compose

  unless @docker_network == nil
    hash.merge!(create_compose_network)
  end

  directory = File.dirname(@compose_file)

  temp_file = directory + '/tmp_docker-compose.yml'
  @system_runner.write_file temp_file, YAML.dump(hash)

  ex = "docker-compose -f #{temp_file} -p #{@project_name} #{command}"

  @system_runner.execute ex
  @system_runner.remove_entry_secure temp_file
end
logs() click to toggle source

stream the logs for the current running stack

# File lib/minke/docker/docker_compose.rb, line 46
def logs
  execute_command 'logs -f'
end
rm() click to toggle source

remove the containers started in a stack defined by the docker compose file

# File lib/minke/docker/docker_compose.rb, line 40
def rm
  execute_command 'rm -v' unless ::Docker.info["Driver"] == "btrfs"
end
services() click to toggle source
# File lib/minke/docker/docker_compose.rb, line 72
def services 
  create_compose['services']
end
up() click to toggle source

start the containers in a stack defined by the docker compose file

# File lib/minke/docker/docker_compose.rb, line 27
def up
  execute_command "up -d"
  sleep 2
end