Module: ComposeUtils
- Defined in:
- lib/docker-compose/utils/compose_utils.rb
Class Method Summary collapse
-
.dir_name ⇒ Object
Returns the directory name where compose file is saved (used in container naming).
-
.format_command(command) ⇒ Object
Transform docker command from string to an array of commands.
-
.format_image(image) ⇒ Object
Format a given docker image in a complete structure (base image + tag).
-
.format_links(links_array) ⇒ Object
Generate a pair key:hash with format service:label.
-
.format_port(port_entry) ⇒ Object
Read a port specification in string format and create a compose port structure.
-
.format_ports_from_running_container(port_entry) ⇒ Object
Format ports from running container.
-
.generate_container_name(container_name, container_label) ⇒ Object
Generate a container name, based on: - directory where the compose file is saved; - container name (or label, if name isn’t provided); - a sequential index;.
Class Method Details
.dir_name ⇒ Object
Returns the directory name where compose file is saved (used in container naming)
9 10 11 |
# File 'lib/docker-compose/utils/compose_utils.rb', line 9 def self.dir_name @dir_name end |
.format_command(command) ⇒ Object
Transform docker command from string to an array of commands
53 54 55 |
# File 'lib/docker-compose/utils/compose_utils.rb', line 53 def self.format_command(command) command.nil? ? nil : command.split(' ') end |
.format_image(image) ⇒ Object
Format a given docker image in a complete structure (base image + tag)
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/docker-compose/utils/compose_utils.rb', line 30 def self.format_image(image) base_image = nil tag = nil if image.nil? return nil end if image.index(':').nil? base_image = image tag = 'latest' else image_split = image.split(':') base_image = image_split[0] tag = image_split[1] end "#{base_image}:#{tag}" end |
.format_links(links_array) ⇒ Object
Generate a pair key:hash with format service:label
The label will be the conainer name if not specified.
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/docker-compose/utils/compose_utils.rb', line 116 def self.format_links(links_array) links = {} return if links_array.nil? links_array.each do |link| parts = link.split(':') case parts.length when 1 links[parts[0]] = parts[0] when 2 links[parts[0]] = parts[1] end end links end |
.format_port(port_entry) ⇒ Object
Read a port specification in string format and create a compose port structure
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/docker-compose/utils/compose_utils.rb', line 61 def self.format_port(port_entry) compose_port = nil container_port = nil host_port = nil host_ip = nil port_parts = port_entry.split(':') case port_parts.length # [container port] when 1 compose_port = ComposePort.new(port_parts[0]) # [host port]:[container port] when 2 compose_port = ComposePort.new(port_parts[1], port_parts[0]) # [host ip]:[host port]:[container port] when 3 compose_port = ComposePort.new(port_parts[2], port_parts[1], port_parts[0]) end compose_port end |
.format_ports_from_running_container(port_entry) ⇒ Object
Format ports from running container
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/docker-compose/utils/compose_utils.rb', line 89 def self.format_ports_from_running_container(port_entry) entries = [] container_port = nil host_ip = nil host_port = nil if port_entry.nil? return entries end port_entry.each do |key, value| container_port = key.gsub(/\D/, '').to_i host_ip = value.first['HostIp'] host_port = value.first['HostPort'] entries << "#{container_port}:#{host_ip}:#{host_port}" end entries end |
.generate_container_name(container_name, container_label) ⇒ Object
Generate a container name, based on:
-
directory where the compose file is saved;
-
container name (or label, if name isn’t provided);
-
a sequential index;
142 143 144 145 146 147 |
# File 'lib/docker-compose/utils/compose_utils.rb', line 142 def self.generate_container_name(container_name, container_label) label = container_name.nil? ? container_label : container_name index = next_available_id "#{@dir_name}_#{label}_#{index}" end |