class Kontena::Cli::Apps::DockerComposeGenerator
Attributes
docker_compose_file[R]
Public Class Methods
new(filename)
click to toggle source
# File lib/kontena/cli/apps/docker_compose_generator.rb, line 10 def initialize(filename) @docker_compose_file = filename end
Public Instance Methods
generate(procfile, addons, env_file)
click to toggle source
# File lib/kontena/cli/apps/docker_compose_generator.rb, line 14 def generate(procfile, addons, env_file) if procfile.keys.size > 0 # generate services found in Procfile docker_compose = { 'version' => '2' } services = {} procfile.each do |service, command| services[service] = {'build' => '.' } if app_json && service == 'web' # Heroku generates PORT env variable so should we do too services[service]['environment'] = ['PORT=5000'] services[service]['ports'] = ['5000:5000'] end services[service]['command'] = "/start #{service}" if service != 'web' services[service]['env_file'] = env_file if env_file # generate addon services addons.each do |addon| addon_service = addon.split(":")[0] addon_service.slice!('heroku-') if valid_addons.has_key?(addon_service) services[service]['links'] = [] unless services[service]['links'] services[service]['links'] << "#{addon_service}:#{addon_service}" services[service]['environment'] = [] unless services[service]['environment'] services[service]['environment'] += valid_addons[addon_service]['environment'] services[addon_service] = {'image' => valid_addons[addon_service]['image']} end end end docker_compose['services'] = services else # no Procfile found, create dummy web service docker_compose = { 'version' => '2', 'services' => { 'web' => { 'build' => '.' } } } docker_compose['services']['web']['env_file'] = env_file if env_file end # create docker-compose.yml file create_yml(docker_compose, docker_compose_file) end