kamal 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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.