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) ⇒ DockerCompose

Returns a new instance of DockerCompose.



16
17
18
19
# File 'lib/minke/docker/docker_compose.rb', line 16

def initialize compose_file, system_runner
  @compose_file = compose_file
  @system_runner = system_runner
end

Instance Method Details

#create_compose_network_fileObject



67
68
69
70
71
72
73
74
75
76
# File 'lib/minke/docker/docker_compose.rb', line 67

def create_compose_network_file
  content = { 'version' => '2'.to_s, 'networks' => {'default' => { 'external' => { 'name' => ENV['DOCKER_NETWORK'] } } } }

  directory = @system_runner.mktmpdir

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

  directory
end

#downObject

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



38
39
40
41
42
43
44
45
46
47
# File 'lib/minke/docker/docker_compose.rb', line 38

def down
  unless ENV['DOCKER_NETWORK'].to_s.empty?
    directory = create_compose_network_file

    @system_runner.execute "docker-compose -f #{@compose_file} -f #{directory + '/docker-compose.yml'} down"
    @system_runner.remove_entry_secure directory
  else
    @system_runner.execute "docker-compose -f #{@compose_file} down -d"
  end
end

#logsObject

stream the logs for the current running stack



57
58
59
# File 'lib/minke/docker/docker_compose.rb', line 57

def logs
  @system_runner.execute "docker-compose -f #{@compose_file} logs -f"
end

#public_address(container, private_port) ⇒ Object

return the local address and port of a containers private port



63
64
65
# File 'lib/minke/docker/docker_compose.rb', line 63

def public_address container, private_port
  @system_runner.execute_and_return "docker-compose -f #{@compose_file} port #{container} #{private_port}"
end

#rmObject

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



51
52
53
# File 'lib/minke/docker/docker_compose.rb', line 51

def rm
  @system_runner.execute "echo y | docker-compose -f #{@compose_file} rm -v" unless ::Docker.info["Driver"] == "btrfs"
end

#upObject

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



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/minke/docker/docker_compose.rb', line 23

def up
  unless ENV['DOCKER_NETWORK'].to_s.empty?
    directory = create_compose_network_file

    @system_runner.execute "docker-compose -f #{@compose_file} -f #{directory + '/docker-compose.yml'} up -d"
    @system_runner.remove_entry_secure directory
  else
    @system_runner.execute "docker-compose -f #{@compose_file} up -d"
  end

  sleep 2
end