diff --git a/app.py b/app.py index 904bcc3..c5277e8 100644 --- a/app.py +++ b/app.py @@ -6,6 +6,8 @@ from flask import Flask, jsonify, render_template app = Flask(__name__) +DOKKU = "/usr/bin/dokku" +DOCKER = "/usr/bin/docker" POLL_SECONDS = int(os.getenv("POLL_SECONDS", "10")) SHOW_CONTAINERS = os.getenv("SHOW_CONTAINERS", "0") == "1" @@ -13,7 +15,7 @@ def sh(cmd: list[str]) -> str: return subprocess.check_output(cmd, stderr=subprocess.STDOUT, text=True).strip() def dokku_apps() -> list[str]: - out = sh(["dokku", "apps:list"]) + out = sh([DOKKU, "apps:list"]) lines = [l.strip() for l in out.splitlines()] # Format: # =====> My Apps @@ -23,14 +25,14 @@ def dokku_apps() -> list[str]: def dokku_urls(app_name: str) -> list[str]: try: - out = sh(["dokku", "urls:report", app_name, "--urls"]) + out = sh([DOKKU, "urls:report", app_name, "--urls"]) return [u.strip() for u in out.split() if u.strip()] except Exception: return [] def dokku_ps_report(app_name: str) -> dict: try: - out = sh(["dokku", "ps:report", app_name]) + out = sh([DOKKU, "ps:report", app_name]) # crude parse: "Key: value" data = {} for line in out.splitlines(): @@ -46,7 +48,7 @@ def docker_stats() -> dict: Returns a mapping of container_name -> {cpu, mem_used, mem_limit, mem_pct} """ fmt = "{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" - out = sh(["docker", "stats", "--no-stream", "--format", fmt]) + out = sh([DOCKER, "stats", "--no-stream", "--format", fmt]) stats = {} for line in out.splitlines(): name, cpu, mem_usage, mem_pct = line.split("\t") @@ -62,7 +64,7 @@ def docker_stats() -> dict: def docker_ps() -> list[dict]: fmt = "{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}" - out = sh(["docker", "ps", "--format", fmt]) + out = sh([DOCKER, "ps", "--format", fmt]) rows = [] for line in out.splitlines(): name, image, status, ports = line.split("\t")