Added network configuration option to application, proxy and accessory sections

This commit is contained in:
Igor Alexandrov
2024-10-09 09:53:17 +04:00
parent 7b48648bf2
commit f04cae529a
5 changed files with 24 additions and 5 deletions

View File

@@ -1,7 +1,7 @@
class Kamal::Commands::Accessory < Kamal::Commands::Base class Kamal::Commands::Accessory < Kamal::Commands::Base
attr_reader :accessory_config attr_reader :accessory_config
delegate :service_name, :image, :hosts, :port, :files, :directories, :cmd, 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, :secrets_io, :secrets_path, :env_directory,
to: :accessory_config to: :accessory_config
@@ -15,7 +15,7 @@ class Kamal::Commands::Accessory < Kamal::Commands::Base
"--name", service_name, "--name", service_name,
"--detach", "--detach",
"--restart", "unless-stopped", "--restart", "unless-stopped",
"--network", "kamal", *network_args,
*config.logging_args, *config.logging_args,
*publish_args, *publish_args,
*env_args, *env_args,
@@ -64,7 +64,7 @@ class Kamal::Commands::Accessory < Kamal::Commands::Base
docker :run, docker :run,
("-it" if interactive), ("-it" if interactive),
"--rm", "--rm",
"--network", "kamal", *network_args,
*env_args, *env_args,
*volume_args, *volume_args,
image, image,

View File

@@ -18,7 +18,7 @@ class Kamal::Commands::App < Kamal::Commands::Base
"--detach", "--detach",
"--restart unless-stopped", "--restart unless-stopped",
"--name", container_name, "--name", container_name,
"--network", "kamal", *config.network_args,
*([ "--hostname", hostname ] if hostname), *([ "--hostname", hostname ] if hostname),
"-e", "KAMAL_CONTAINER_NAME=\"#{container_name}\"", "-e", "KAMAL_CONTAINER_NAME=\"#{container_name}\"",
"-e", "KAMAL_VERSION=\"#{config.version}\"", "-e", "KAMAL_VERSION=\"#{config.version}\"",

View File

@@ -11,7 +11,7 @@ module Kamal::Commands::App::Execution
docker :run, docker :run,
("-it" if interactive), ("-it" if interactive),
"--rm", "--rm",
"--network", "kamal", *config.network_args,
*role&.env_args(host), *role&.env_args(host),
*argumentize("--env", env), *argumentize("--env", env),
*config.volume_args, *config.volume_args,

View File

@@ -18,6 +18,7 @@ class Kamal::Configuration
PROXY_HTTP_PORT = 80 PROXY_HTTP_PORT = 80
PROXY_HTTPS_PORT = 443 PROXY_HTTPS_PORT = 443
PROXY_LOG_MAX_SIZE = "10m" PROXY_LOG_MAX_SIZE = "10m"
NETWORK = "kamal"
class << self class << self
def create_from(config_file:, destination: nil, version: nil) def create_from(config_file:, destination: nil, version: nil)
@@ -193,6 +194,10 @@ class Kamal::Configuration
logging.args logging.args
end end
def network_args
argumentize "--network", network
end
def readiness_delay def readiness_delay
raw_config.readiness_delay || 7 raw_config.readiness_delay || 7
@@ -297,6 +302,10 @@ class Kamal::Configuration
end end
private private
def network
raw_config["network"] || NETWORK
end
# Will raise ArgumentError if any required config keys are missing # Will raise ArgumentError if any required config keys are missing
def ensure_destination_if_required def ensure_destination_if_required
if require_destination? && destination.nil? if require_destination? && destination.nil?

View File

@@ -1,6 +1,8 @@
class Kamal::Configuration::Accessory class Kamal::Configuration::Accessory
include Kamal::Configuration::Validation include Kamal::Configuration::Validation
NETWORK = "kamal"
delegate :argumentize, :optionize, to: Kamal::Utils delegate :argumentize, :optionize, to: Kamal::Utils
attr_reader :name, :accessory_config, :env attr_reader :name, :accessory_config, :env
@@ -38,6 +40,10 @@ class Kamal::Configuration::Accessory
end end
end end
def network_args
argumentize "--network", network
end
def publish_args def publish_args
argumentize "--publish", port if port argumentize "--publish", port if port
end end
@@ -173,4 +179,8 @@ class Kamal::Configuration::Accessory
accessory_config["roles"].flat_map { |role| config.role(role).hosts } accessory_config["roles"].flat_map { |role| config.role(role).hosts }
end end
end end
def network
accessory_config["network"] || NETWORK
end
end end