kamal 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fba91f4d7c980288819db64e720bd4295ab0d5107b9ecb0178a412cbef74c175
4
- data.tar.gz: a2a5c57843f85ca13eb9c1e7dbc9227b3044273ff7ca629619b03395c0eae2d1
3
+ metadata.gz: 3f37e44e951bb159f0af8f19aea46d1cbbf4d6950777c11f545b0eafd0e3dcf0
4
+ data.tar.gz: 628944b9411d03c7890b715eda2984c2b920fc271b8567432a20fe5b1af709ba
5
5
  SHA512:
6
- metadata.gz: 578305b46242ea6853beae0d5342090e64b91aea2146cdd37448e82b744645b900b9c670e509b0adc56db62b4d22b0040c2c2b03ea17d48a4cd469a8a7c5a4ab
7
- data.tar.gz: e10cfcb8c13ae177822afbbcfd1024731cfd416e1cde0b2b43d8ed9b3abe93b7638246eb0432f0c0e28f98e99430f5d97610f9f5ae5c880abfe3459e8fe23f09
6
+ metadata.gz: 7067b13ef2d61dca2e184a6abfc4707a840f954277febd489836e0e684fadef932015032ec23fc94889c33d37094ac5345ddd65e139ab63572c7d9e20090f240
7
+ data.tar.gz: 3e1a750fc601a401ecd650e3701dbafc7adc5775c97e12131f47f75a5e04f0524a7ce867202f38a70c769086389bda8889de66f18614565d164f4e6c96f71ec3
@@ -1,3 +1,5 @@
1
+ require "active_support/core_ext/array/conversions"
2
+
1
3
  class Kamal::Cli::Accessory < Kamal::Cli::Base
2
4
  desc "boot [NAME]", "Boot new accessory service on host (use NAME=all to boot all accessories)"
3
5
  def boot(name, prepare: true)
@@ -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 env stub in .env"
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"
@@ -25,12 +25,14 @@ class Kamal::Cli::Proxy < Kamal::Cli::Base
25
25
  option :publish, type: :boolean, default: true, desc: "Publish the proxy ports on the host"
26
26
  option :http_port, type: :numeric, default: Kamal::Configuration::PROXY_HTTP_PORT, desc: "HTTP port to publish on the host"
27
27
  option :https_port, type: :numeric, default: Kamal::Configuration::PROXY_HTTPS_PORT, desc: "HTTPS port to publish on the host"
28
+ option :log_max_size, type: :string, default: Kamal::Configuration::PROXY_LOG_MAX_SIZE, desc: "Max size of proxy logs"
28
29
  option :docker_options, type: :array, default: [], desc: "Docker options to pass to the proxy container", banner: "option=value option2=value2"
29
30
  def boot_config(subcommand)
30
31
  case subcommand
31
32
  when "set"
32
33
  boot_options = [
33
34
  *(KAMAL.config.proxy_publish_args(options[:http_port], options[:https_port]) if options[:publish]),
35
+ *(KAMAL.config.proxy_logging_args(options[:log_max_size])),
34
36
  *options[:docker_options].map { |option| "--#{option}" }
35
37
  ]
36
38
 
@@ -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
- # Set ssl: false if using something like Cloudflare to terminate SSL (but keep host!).
18
- proxy:
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
- #!/usr/bin/env ruby
1
+ #!/bin/sh
2
2
 
3
- # A sample docker-setup hook
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..."
@@ -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")),
@@ -14,9 +14,10 @@ class Kamal::Configuration
14
14
 
15
15
  include Validation
16
16
 
17
- PROXY_MINIMUM_VERSION = "v0.7.0"
17
+ PROXY_MINIMUM_VERSION = "v0.8.0"
18
18
  PROXY_HTTP_PORT = 80
19
19
  PROXY_HTTPS_PORT = 443
20
+ PROXY_LOG_MAX_SIZE = "10m"
20
21
 
21
22
  class << self
22
23
  def create_from(config_file:, destination: nil, version: nil)
@@ -252,8 +253,12 @@ class Kamal::Configuration
252
253
  argumentize "--publish", [ "#{http_port}:#{PROXY_HTTP_PORT}", "#{https_port}:#{PROXY_HTTPS_PORT}" ]
253
254
  end
254
255
 
256
+ def proxy_logging_args(max_size)
257
+ argumentize "--log-opt", "max-size=#{max_size}"
258
+ end
259
+
255
260
  def proxy_options_default
256
- proxy_publish_args PROXY_HTTP_PORT, PROXY_HTTPS_PORT
261
+ [ *proxy_publish_args(PROXY_HTTP_PORT, PROXY_HTTPS_PORT), *proxy_logging_args(PROXY_LOG_MAX_SIZE) ]
257
262
  end
258
263
 
259
264
  def proxy_image
data/lib/kamal/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Kamal
2
- VERSION = "2.1.1"
2
+ VERSION = "2.2.0"
3
3
  end
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.1
4
+ version: 2.2.0
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-03 00:00:00.000000000 Z
11
+ date: 2024-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -336,7 +336,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
336
336
  - !ruby/object:Gem::Version
337
337
  version: '0'
338
338
  requirements: []
339
- rubygems_version: 3.5.16
339
+ rubygems_version: 3.3.22
340
340
  signing_key:
341
341
  specification_version: 4
342
342
  summary: Deploy web apps in containers to servers running Docker with zero downtime.