kamal 2.1.0 → 2.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kamal/cli/main.rb +1 -1
- data/lib/kamal/cli/templates/deploy.yml +3 -2
- data/lib/kamal/cli/templates/sample_hooks/docker-setup.sample +2 -12
- data/lib/kamal/commander/specifics.rb +7 -2
- data/lib/kamal/configuration/proxy.rb +1 -1
- data/lib/kamal/version.rb +1 -1
- metadata +2 -3
- data/lib/kamal/configuration/proxy.rb.orig +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1aaf8b7548e1dfebb3f19739491a5fb53ec715aea28ea3a93060b4b08c7904da
|
4
|
+
data.tar.gz: f4c669cfff249ab9595a6109ee6d858601345495e689b9c8e020c3e1fe7a477f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a3ee617d039db0c058fede9fbe66c0ffcc937c437ec9a85c13d2f5d9c645e475a29eab638d05b938305a197dba96493f9d9349fc736c226ef1457615843f648
|
7
|
+
data.tar.gz: 7ef1c0c7173d2f8c0b37d0f5efa507c70f8691c9045ccbfce78daec50fc71faf396e2e456a29c86e78f59fe8f1a0ac785a9ff8c27455d86ca04573faf46de08c
|
data/lib/kamal/cli/main.rb
CHANGED
@@ -135,7 +135,7 @@ class Kamal::Cli::Main < Kamal::Cli::Base
|
|
135
135
|
puts "No documentation found for #{section}"
|
136
136
|
end
|
137
137
|
|
138
|
-
desc "init", "Create config stub in config/deploy.yml and
|
138
|
+
desc "init", "Create config stub in config/deploy.yml and secrets stub in .kamal"
|
139
139
|
option :bundle, type: :boolean, default: false, desc: "Add Kamal to the Gemfile and create a bin/kamal binstub"
|
140
140
|
def init
|
141
141
|
require "fileutils"
|
@@ -14,8 +14,9 @@ servers:
|
|
14
14
|
# cmd: bin/jobs
|
15
15
|
|
16
16
|
# Enable SSL auto certification via Let's Encrypt (and allow for multiple apps on one server).
|
17
|
-
#
|
18
|
-
|
17
|
+
# If using something like Cloudflare, it is recommended to set encryption mode
|
18
|
+
# in Cloudflare's SSL/TLS setting to "Full" to enable end-to-end encryption.
|
19
|
+
proxy:
|
19
20
|
ssl: true
|
20
21
|
host: app.example.com
|
21
22
|
# kamal-proxy connects to your container over port 80, use `app_port` to specify a different port.
|
@@ -1,13 +1,3 @@
|
|
1
|
-
#!/
|
1
|
+
#!/bin/sh
|
2
2
|
|
3
|
-
|
4
|
-
#
|
5
|
-
# Sets up a Docker network on defined hosts which can then be used by the application’s containers
|
6
|
-
|
7
|
-
hosts = ENV["KAMAL_HOSTS"].split(",")
|
8
|
-
|
9
|
-
hosts.each do |ip|
|
10
|
-
destination = "root@#{ip}"
|
11
|
-
puts "Creating a Docker network \"kamal\" on #{destination}"
|
12
|
-
`ssh #{destination} docker network create kamal`
|
13
|
-
end
|
3
|
+
echo "Docker set up on $KAMAL_HOSTS..."
|
@@ -43,7 +43,12 @@ class Kamal::Commander::Specifics
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def specified_hosts
|
46
|
-
|
47
|
-
|
46
|
+
specified_hosts = specific_hosts || config.all_hosts
|
47
|
+
|
48
|
+
if (specific_role_hosts = specific_roles&.flat_map(&:hosts)).present?
|
49
|
+
specified_hosts.select { |host| specific_role_hosts.include?(host) }
|
50
|
+
else
|
51
|
+
specified_hosts
|
52
|
+
end
|
48
53
|
end
|
49
54
|
end
|
@@ -29,7 +29,7 @@ class Kamal::Configuration::Proxy
|
|
29
29
|
def deploy_options
|
30
30
|
{
|
31
31
|
host: hosts,
|
32
|
-
tls: proxy_config["ssl"],
|
32
|
+
tls: proxy_config["ssl"].presence,
|
33
33
|
"deploy-timeout": seconds_duration(config.deploy_timeout),
|
34
34
|
"drain-timeout": seconds_duration(config.drain_timeout),
|
35
35
|
"health-check-interval": seconds_duration(proxy_config.dig("healthcheck", "interval")),
|
data/lib/kamal/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kamal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-10-
|
11
|
+
date: 2024-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -285,7 +285,6 @@ files:
|
|
285
285
|
- lib/kamal/configuration/env/tag.rb
|
286
286
|
- lib/kamal/configuration/logging.rb
|
287
287
|
- lib/kamal/configuration/proxy.rb
|
288
|
-
- lib/kamal/configuration/proxy.rb.orig
|
289
288
|
- lib/kamal/configuration/registry.rb
|
290
289
|
- lib/kamal/configuration/role.rb
|
291
290
|
- lib/kamal/configuration/servers.rb
|
@@ -1,67 +0,0 @@
|
|
1
|
-
class Kamal::Configuration::Proxy
|
2
|
-
include Kamal::Configuration::Validation
|
3
|
-
|
4
|
-
DEFAULT_LOG_REQUEST_HEADERS = [ "Cache-Control", "Last-Modified", "User-Agent" ]
|
5
|
-
CONTAINER_NAME = "kamal-proxy"
|
6
|
-
|
7
|
-
delegate :argumentize, :optionize, to: Kamal::Utils
|
8
|
-
|
9
|
-
attr_reader :config, :proxy_config
|
10
|
-
|
11
|
-
def initialize(config:, proxy_config:, context: "proxy")
|
12
|
-
@config = config
|
13
|
-
@proxy_config = proxy_config
|
14
|
-
validate! @proxy_config, with: Kamal::Configuration::Validator::Proxy, context: context
|
15
|
-
end
|
16
|
-
|
17
|
-
def app_port
|
18
|
-
proxy_config.fetch("app_port", 80)
|
19
|
-
end
|
20
|
-
|
21
|
-
def ssl?
|
22
|
-
proxy_config.fetch("ssl", false)
|
23
|
-
end
|
24
|
-
|
25
|
-
def hosts
|
26
|
-
proxy_config["hosts"] || proxy_config["host"]&.split(",") || []
|
27
|
-
end
|
28
|
-
|
29
|
-
def deploy_options
|
30
|
-
{
|
31
|
-
<<<<<<< HEAD
|
32
|
-
host: hosts,
|
33
|
-
tls: proxy_config["ssl"] ? true : nil,
|
34
|
-
=======
|
35
|
-
host: proxy_config["host"],
|
36
|
-
tls: proxy_config["ssl"],
|
37
|
-
>>>>>>> 530d2cb (Use `=` in kamal-proxy deploy command args)
|
38
|
-
"deploy-timeout": seconds_duration(config.deploy_timeout),
|
39
|
-
"drain-timeout": seconds_duration(config.drain_timeout),
|
40
|
-
"health-check-interval": seconds_duration(proxy_config.dig("healthcheck", "interval")),
|
41
|
-
"health-check-timeout": seconds_duration(proxy_config.dig("healthcheck", "timeout")),
|
42
|
-
"health-check-path": proxy_config.dig("healthcheck", "path"),
|
43
|
-
"target-timeout": seconds_duration(proxy_config["response_timeout"]),
|
44
|
-
"buffer-requests": proxy_config.fetch("buffering", { "requests": true }).fetch("requests", true),
|
45
|
-
"buffer-responses": proxy_config.fetch("buffering", { "responses": true }).fetch("responses", true),
|
46
|
-
"buffer-memory": proxy_config.dig("buffering", "memory"),
|
47
|
-
"max-request-body": proxy_config.dig("buffering", "max_request_body"),
|
48
|
-
"max-response-body": proxy_config.dig("buffering", "max_response_body"),
|
49
|
-
"forward-headers": proxy_config.dig("forward_headers"),
|
50
|
-
"log-request-header": proxy_config.dig("logging", "request_headers") || DEFAULT_LOG_REQUEST_HEADERS,
|
51
|
-
"log-response-header": proxy_config.dig("logging", "response_headers")
|
52
|
-
}.compact
|
53
|
-
end
|
54
|
-
|
55
|
-
def deploy_command_args(target:)
|
56
|
-
optionize ({ target: "#{target}:#{app_port}" }).merge(deploy_options), with: "="
|
57
|
-
end
|
58
|
-
|
59
|
-
def merge(other)
|
60
|
-
self.class.new config: config, proxy_config: proxy_config.deep_merge(other.proxy_config)
|
61
|
-
end
|
62
|
-
|
63
|
-
private
|
64
|
-
def seconds_duration(value)
|
65
|
-
value ? "#{value}s" : nil
|
66
|
-
end
|
67
|
-
end
|