Class: Kamal::Configuration::Traefik
- Inherits:
-
Object
- Object
- Kamal::Configuration::Traefik
show all
- Includes:
- Validation
- Defined in:
- lib/kamal/configuration/traefik.rb
Constant Summary
collapse
- DEFAULT_IMAGE =
"traefik:v2.10"
- CONTAINER_PORT =
80
- DEFAULT_ARGS =
{
"log.level" => "DEBUG"
}
- DEFAULT_LABELS =
{
"traefik.http.routers.catchall.entryPoints" => "http",
"traefik.http.routers.catchall.rule" => "PathPrefix(`/`)",
"traefik.http.routers.catchall.service" => "unavailable",
"traefik.http.routers.catchall.priority" => 1,
"traefik.http.services.unavailable.loadbalancer.server.port" => "0"
}
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Validation
#validate!, #validation_yml
Constructor Details
#initialize(config:) ⇒ Traefik
Returns a new instance of Traefik.
20
21
22
23
24
|
# File 'lib/kamal/configuration/traefik.rb', line 20
def initialize(config:)
@config = config
@traefik_config = config.raw_config.traefik || {}
validate! traefik_config
end
|
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
18
19
20
|
# File 'lib/kamal/configuration/traefik.rb', line 18
def config
@config
end
|
#traefik_config ⇒ Object
Returns the value of attribute traefik_config.
18
19
20
|
# File 'lib/kamal/configuration/traefik.rb', line 18
def traefik_config
@traefik_config
end
|
Instance Method Details
#args ⇒ Object
53
54
55
|
# File 'lib/kamal/configuration/traefik.rb', line 53
def args
DEFAULT_ARGS.merge(traefik_config.fetch("args", {}))
end
|
#env ⇒ Object
34
35
36
37
38
39
|
# File 'lib/kamal/configuration/traefik.rb', line 34
def env
Kamal::Configuration::Env.new \
config: traefik_config.fetch("env", {}),
secrets_file: File.join(config.host_env_directory, "traefik", "traefik.env"),
context: "traefik/env"
end
|
#host_port ⇒ Object
41
42
43
|
# File 'lib/kamal/configuration/traefik.rb', line 41
def host_port
traefik_config.fetch("host_port", CONTAINER_PORT)
end
|
#image ⇒ Object
57
58
59
|
# File 'lib/kamal/configuration/traefik.rb', line 57
def image
traefik_config.fetch("image", DEFAULT_IMAGE)
end
|
#labels ⇒ Object
30
31
32
|
# File 'lib/kamal/configuration/traefik.rb', line 30
def labels
DEFAULT_LABELS.merge(traefik_config["labels"] || {})
end
|
#options ⇒ Object
45
46
47
|
# File 'lib/kamal/configuration/traefik.rb', line 45
def options
traefik_config.fetch("options", {})
end
|
#port ⇒ Object
49
50
51
|
# File 'lib/kamal/configuration/traefik.rb', line 49
def port
"#{host_port}:#{CONTAINER_PORT}"
end
|
#publish? ⇒ Boolean
26
27
28
|
# File 'lib/kamal/configuration/traefik.rb', line 26
def publish?
traefik_config["publish"] != false
end
|