class DockerComposeConfig

Support multiple versions for docker-compose configs.

Attributes

networks[R]
services[R]
version[R]
volumes[R]

Public Class Methods

new(filepath) click to toggle source
# File lib/docker_compose_config.rb, line 5
def initialize(filepath)
  parse_docker_compose_config(filepath)
end

Public Instance Methods

parse_docker_compose_config(filepath) click to toggle source

Parse the docker-compose config

# File lib/docker_compose_config.rb, line 10
def parse_docker_compose_config(filepath)
  f = File.read(filepath)
  f = f.gsub(/\$([a-zA-Z_]+[a-zA-Z0-9_]*)|\$\{(.+)\}/) { ENV[$1 || $2] }

  config = YAML.load(f)

  unless config
    config = YAML.load('{}')
  end

  case (config['version'])
  when 2,'2'
    parse_version_2(config)
  else
    parse_version_1(config)
  end
end
parse_version_1(config) click to toggle source
# File lib/docker_compose_config.rb, line 35
def parse_version_1(config)
  @version = 1
  @services = config
  @volumes = nil
  @networks = nil
end
parse_version_2(config) click to toggle source
# File lib/docker_compose_config.rb, line 28
def parse_version_2(config)
  @version = 2
  @services = config['services']
  @volumes = config['volumes']
  @networks = config['networks']
end