From f04cae529abfdf5b4a1930b804eced4a84db34ed Mon Sep 17 00:00:00 2001 From: Igor Alexandrov Date: Wed, 9 Oct 2024 09:53:17 +0400 Subject: [PATCH] Added network configuration option to application, proxy and accessory sections --- lib/kamal/commands/accessory.rb | 6 +++--- lib/kamal/commands/app.rb | 2 +- lib/kamal/commands/app/execution.rb | 2 +- lib/kamal/configuration.rb | 9 +++++++++ lib/kamal/configuration/accessory.rb | 10 ++++++++++ 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/lib/kamal/commands/accessory.rb b/lib/kamal/commands/accessory.rb index 0c1b9009..9abb6dfc 100644 --- a/lib/kamal/commands/accessory.rb +++ b/lib/kamal/commands/accessory.rb @@ -1,7 +1,7 @@ class Kamal::Commands::Accessory < Kamal::Commands::Base attr_reader :accessory_config delegate :service_name, :image, :hosts, :port, :files, :directories, :cmd, - :publish_args, :env_args, :volume_args, :label_args, :option_args, + :network_args, :publish_args, :env_args, :volume_args, :label_args, :option_args, :secrets_io, :secrets_path, :env_directory, to: :accessory_config @@ -15,7 +15,7 @@ class Kamal::Commands::Accessory < Kamal::Commands::Base "--name", service_name, "--detach", "--restart", "unless-stopped", - "--network", "kamal", + *network_args, *config.logging_args, *publish_args, *env_args, @@ -64,7 +64,7 @@ class Kamal::Commands::Accessory < Kamal::Commands::Base docker :run, ("-it" if interactive), "--rm", - "--network", "kamal", + *network_args, *env_args, *volume_args, image, diff --git a/lib/kamal/commands/app.rb b/lib/kamal/commands/app.rb index 6d8f44c6..56a5656b 100644 --- a/lib/kamal/commands/app.rb +++ b/lib/kamal/commands/app.rb @@ -18,7 +18,7 @@ class Kamal::Commands::App < Kamal::Commands::Base "--detach", "--restart unless-stopped", "--name", container_name, - "--network", "kamal", + *config.network_args, *([ "--hostname", hostname ] if hostname), "-e", "KAMAL_CONTAINER_NAME=\"#{container_name}\"", "-e", "KAMAL_VERSION=\"#{config.version}\"", diff --git a/lib/kamal/commands/app/execution.rb b/lib/kamal/commands/app/execution.rb index 4434c26a..5770f7aa 100644 --- a/lib/kamal/commands/app/execution.rb +++ b/lib/kamal/commands/app/execution.rb @@ -11,7 +11,7 @@ module Kamal::Commands::App::Execution docker :run, ("-it" if interactive), "--rm", - "--network", "kamal", + *config.network_args, *role&.env_args(host), *argumentize("--env", env), *config.volume_args, diff --git a/lib/kamal/configuration.rb b/lib/kamal/configuration.rb index 09f1ed89..b26c30c9 100644 --- a/lib/kamal/configuration.rb +++ b/lib/kamal/configuration.rb @@ -18,6 +18,7 @@ class Kamal::Configuration PROXY_HTTP_PORT = 80 PROXY_HTTPS_PORT = 443 PROXY_LOG_MAX_SIZE = "10m" + NETWORK = "kamal" class << self def create_from(config_file:, destination: nil, version: nil) @@ -193,6 +194,10 @@ class Kamal::Configuration logging.args end + def network_args + argumentize "--network", network + end + def readiness_delay raw_config.readiness_delay || 7 @@ -297,6 +302,10 @@ class Kamal::Configuration end private + def network + raw_config["network"] || NETWORK + end + # Will raise ArgumentError if any required config keys are missing def ensure_destination_if_required if require_destination? && destination.nil? diff --git a/lib/kamal/configuration/accessory.rb b/lib/kamal/configuration/accessory.rb index 804a1502..7aed80ea 100644 --- a/lib/kamal/configuration/accessory.rb +++ b/lib/kamal/configuration/accessory.rb @@ -1,6 +1,8 @@ class Kamal::Configuration::Accessory include Kamal::Configuration::Validation + NETWORK = "kamal" + delegate :argumentize, :optionize, to: Kamal::Utils attr_reader :name, :accessory_config, :env @@ -38,6 +40,10 @@ class Kamal::Configuration::Accessory end end + def network_args + argumentize "--network", network + end + def publish_args argumentize "--publish", port if port end @@ -173,4 +179,8 @@ class Kamal::Configuration::Accessory accessory_config["roles"].flat_map { |role| config.role(role).hosts } end end + + def network + accessory_config["network"] || NETWORK + end end