Update paths to dokku and docker

This commit is contained in:
Peter Stockings
2025-12-22 12:25:53 +11:00
parent 6b30681f2f
commit edd6bd2ce9

12
app.py
View File

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