dry-stack 0.0.38 → 0.0.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dry-stack/stack.rb +22 -20
  3. data/lib/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 552fc69a9e66540b6dda0684697a9f6d61fca3df74237622d7c332bbdff055ef
4
- data.tar.gz: 47525a271a081a4eb8f0ced2ffed4ef8292e86959efcb45aa0e08aff2a86a4e3
3
+ metadata.gz: 7e9b84c4033d29204a5625ad37ab81c03f23f828c164127e53c4d7421667ada6
4
+ data.tar.gz: 2c38a45e3951c7b70f4cc142f44850eaf4a6a9d3929a2e93b6aaad4a40f136e5
5
5
  SHA512:
6
- metadata.gz: abdc1e2747cfe02adedbaff0c56d5b2ccba4406c4705313b618e1889bd6a47bcba6d0f0cc9b1b0eaaa73fa62f511ab734c1d07c839a8ca9f070c405365783c48
7
- data.tar.gz: e07c5699910cbaecda40dceab572a693e20bb069526b340d1763549c8354a2b2d7ce82ba294909bff4f2de5b841b09e6d24c62c6b7b656108c5d5c4fbd49a5c6
6
+ metadata.gz: 9086e6f00852383990845461c207cbec44750203929daf5b19698d2a11f60e6ee2074516adb5af2d5f8587b3d8dc9a3a026625dcea11a9e4ff7ffbb8a8d7cf34
7
+ data.tar.gz: 05615bde9a94a491066fab4b8e6045f517dd4e896e1b15f536543b2c4cf9e969cee82884d6b35f0605d0bdb6899f1c65dada887d56e70ebcbe2fae4815043642
@@ -16,6 +16,7 @@ module Dry
16
16
  def image(name)= @service[:image] = name
17
17
  def ports(ports)= ((@service[:ports] ||= []) << ports).flatten!
18
18
  def command(cmd)= @service[:command] = cmd
19
+ def entrypoint(cmd)= @service[:entrypoint] = cmd
19
20
  def deploy_label(str)= @service[:deploy][:labels] << str
20
21
  end
21
22
 
@@ -92,7 +93,6 @@ module Dry
92
93
 
93
94
  compose[:services].each do |name, service|
94
95
  ingress = [@ingress[name]].flatten
95
- ingress[0][:port] ||= service[:ports]&.first if ingress[0]
96
96
  service[:deploy] ||= {}
97
97
  service[:deploy][:labels] ||= []
98
98
  service[:deploy][:labels] += @labels.map { "#{_1}=#{_2}" }
@@ -111,6 +111,7 @@ module Dry
111
111
  end
112
112
 
113
113
  if ingress[0] && opts[:ingress]
114
+ ingress[0][:port] ||= service[:ports]&.first
114
115
  service[:deploy][:labels] = ingress[0]&.map { |k, v| "ingress.#{k}=#{v}" }
115
116
  end
116
117
 
@@ -120,29 +121,30 @@ module Dry
120
121
  service[:deploy][:labels] += [
121
122
  'traefik.enable=true',
122
123
  "traefik.http.routers.#{service_name}.service=#{service_name}",
123
- "traefik.http.services.#{service_name}.loadbalancer.server.port=#{ingress[0][:port]}"
124
124
  ]
125
+ ingress.each_with_index do |ing, index|
126
+ ing[:port] ||= service[:ports]&.first
127
+ service[:deploy][:labels] <<
128
+ "traefik.http.services.#{service_name}-#{index}.loadbalancer.server.port=#{ing[:port]}"
129
+
130
+ if opts[:traefik_tls]
131
+ domain = opts[:tls_domain] || 'example.com'
132
+ domain = @ingress[name][:host].gsub('.*', ".#{domain}") if @ingress[name][:host]
133
+ domain = @ingress[name][:tls_domain] if @ingress[name][:tls_domain]
134
+ service[:deploy][:labels] += [
135
+ "traefik.http.routers.#{service_name}-#{index}.tls=true",
136
+ "traefik.http.routers.#{service_name}-#{index}.tls.certresolver=le",
137
+ "traefik.http.routers.#{service_name}-#{index}.tls.domains[0].main=#{domain}"
138
+ ]
139
+ end
125
140
 
126
- if opts[:traefik_tls]
127
- domain = opts[:tls_domain] || 'example.com'
128
- domain = @ingress[name][:host].gsub('.*', ".#{domain}") if @ingress[name][:host]
129
- domain = @ingress[name][:tls_domain] if @ingress[name][:tls_domain]
130
- service[:deploy][:labels] += [
131
- "traefik.http.routers.#{service_name}.tls=true",
132
- "traefik.http.routers.#{service_name}.tls.certresolver=le",
133
- "traefik.http.routers.#{service_name}.tls.domains[0].main=#{domain}"
134
- ]
135
- end
136
-
137
- rule_group = ingress.map do|r|
138
141
  rule = []
139
- rule << "HostRegexp(`{name:#{nginx_host2regexp r[:host]}}`)" if r[:host]
140
- rule << "PathPrefix(`#{nginx_host2regexp r[:path]}`)" if r[:path]
141
- rule << "#{r[:rule]}" if r[:rule]
142
- rule.join ' && '
142
+ rule << "HostRegexp(`{name:#{nginx_host2regexp ing[:host]}}`)" if ing[:host]
143
+ rule << "PathPrefix(`#{nginx_host2regexp ing[:path]}`)" if ing[:path]
144
+ rule << "#{ing[:rule]}" if ing[:rule]
145
+
146
+ service[:deploy][:labels] << "traefik.http.routers.#{service_name}-#{index}.rule=#{rule.join ' && '}"
143
147
  end
144
- rule = rule_group.size > 1 ? rule_group.map{"(#{_1})"}.join(' || ') : rule_group[0]
145
- service[:deploy][:labels] << "traefik.http.routers.#{service_name}.rule=#{rule}"
146
148
  end
147
149
 
148
150
  hash = {'service-name': service_name}
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.38'
3
+ VERSION = '0.0.40'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.38
4
+ version: 0.0.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-27 00:00:00.000000000 Z
11
+ date: 2023-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake