Class: Minke::Docker::DockerCompose

Inherits:
Object
  • Object
show all
Defined in:
lib/minke/docker/docker_compose.rb

Instance Method Summary collapse

Constructor Details

#initialize(compose_file, system_runner, project_name, docker_network = nil) ⇒ DockerCompose

Returns a new instance of DockerCompose.



18
19
20
21
22
23
# 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

Instance Method Details

#create_composeObject



76
77
78
79
80
81
82
83
84
85
86
87
88
# 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_networkObject



68
69
70
# File 'lib/minke/docker/docker_compose.rb', line 68

def create_compose_network
  { 'networks' => {'default' => { 'external' => { 'name' => @docker_network } } } }
end

#downObject

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



34
35
36
# File 'lib/minke/docker/docker_compose.rb', line 34

def down
  execute_command "down -v"
end

#execute_command(command) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 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

#logsObject

stream the logs for the current running stack



46
47
48
# File 'lib/minke/docker/docker_compose.rb', line 46

def logs
  execute_command 'logs -f'
end

#rmObject

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



40
41
42
# File 'lib/minke/docker/docker_compose.rb', line 40

def rm
  execute_command 'rm -v' unless ::Docker.info["Driver"] == "btrfs"
end

#servicesObject



72
73
74
# File 'lib/minke/docker/docker_compose.rb', line 72

def services 
  create_compose['services']
end

#upObject

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



27
28
29
30
# File 'lib/minke/docker/docker_compose.rb', line 27

def up
  execute_command "up -d"
  sleep 2
end