class Kamal::Commands::Traefik
def cmd_option_args
def cmd_option_args if args = config.traefik["args"] optionize DEFAULT_ARGS.merge(args), with: "=" else optionize DEFAULT_ARGS, with: "=" end end
def docker_options_args
def docker_options_args optionize(config.traefik["options"] || {}) end
def env_args
def env_args argumentize "--env-file", host_env_file_path end
def env_file
def env_file Kamal::EnvFile.new(config.traefik.fetch("env", {})) end
def follow_logs(host:, grep: nil)
def follow_logs(host:, grep: nil) run_over_ssh pipe( docker(:logs, "traefik", "--timestamps", "--tail", "10", "--follow", "2>&1"), (%(grep "#{grep}") if grep) ).join(" "), host: host end
def host_env_directory
def host_env_directory File.join config.host_env_directory, "traefik" end
def host_env_file_path
def host_env_file_path File.join host_env_directory, "traefik.env" end
def host_port
def host_port config.traefik["host_port"] || CONTAINER_PORT end
def image
def image config.traefik.fetch("image") { DEFAULT_IMAGE } end
def info
def info docker :ps, "--filter", "name=^traefik$" end
def label_args
def label_args argumentize "--label", labels end
def labels
def labels DEFAULT_LABELS.merge(config.traefik["labels"] || {}) end
def logs(since: nil, lines: nil, grep: nil)
def logs(since: nil, lines: nil, grep: nil) pipe \ docker(:logs, "traefik", (" --since #{since}" if since), (" --tail #{lines}" if lines), "--timestamps", "2>&1"), ("grep '#{grep}'" if grep) end
def make_env_directory
def make_env_directory make_directory(host_env_directory) end
def port
def port "#{host_port}:#{CONTAINER_PORT}" end
def publish_args
def publish_args argumentize "--publish", port unless config.traefik["publish"] == false end
def remove_container
def remove_container docker :container, :prune, "--force", "--filter", "label=org.opencontainers.image.title=Traefik" end
def remove_env_file
def remove_env_file [:rm, "-f", host_env_file_path] end
def remove_image
def remove_image docker :image, :prune, "--all", "--force", "--filter", "label=org.opencontainers.image.title=Traefik" end
def run
def run docker :run, "--name traefik", "--detach", "--restart", "unless-stopped", *publish_args, "--volume", "/var/run/docker.sock:/var/run/docker.sock", *env_args, *config.logging_args, *label_args, *docker_options_args, image, "--providers.docker", *cmd_option_args end
def start
def start docker :container, :start, "traefik" end
def start_or_run
def start_or_run combine start, run, by: "||" end
def stop
def stop docker :container, :stop, "traefik" end