Support a dynamic primary_web_role instead of assuming it's 'web'.

This allows for more meaningful naming in roles.

The only caution here is that we don't support the renaming of roles, so
any migration is left to the user.
This commit is contained in:
Matthew Kent
2023-11-10 16:35:25 -08:00
parent 97ba6b746b
commit 47f8725cf3
2 changed files with 18 additions and 4 deletions

View File

@@ -1,7 +1,7 @@
class Kamal::Commands::Healthcheck < Kamal::Commands::Base
def run
web = config.role(:web)
web = config.role(config.primary_web_role)
docker :run,
"--detach",

View File

@@ -90,14 +90,21 @@ class Kamal::Configuration
end
def primary_web_host
role(:web).primary_host
role(primary_web_role)&.primary_host
end
def traefik_roles
roles.select(&:running_traefik?)
end
def traefik_role_names
traefik_roles.flat_map(&:name)
end
def traefik_hosts
roles.select(&:running_traefik?).flat_map(&:hosts).uniq
traefik_roles.flat_map(&:hosts).uniq
end
def repository
[ raw_config.registry["server"], image ].compact.join("/")
end
@@ -199,6 +206,9 @@ class Kamal::Configuration
raw_config.asset_path
end
def primary_web_role
raw_config.primary_web_role || "web"
end
def valid?
ensure_destination_if_required && ensure_required_keys_present && ensure_valid_kamal_version
@@ -253,6 +263,10 @@ class Kamal::Configuration
end
end
unless traefik_role_names.include?(primary_web_role)
raise ArgumentError, "Role #{primary_web_role} needs to have traefik enabled"
end
true
end