commit aa512557150cc5ebdda2bf89090b692268b6fb05 Author: JonatanRek Date: Fri Aug 4 19:23:47 2023 +0200 first commit diff --git a/index.py b/index.py new file mode 100644 index 0000000..16eaa4e --- /dev/null +++ b/index.py @@ -0,0 +1,53 @@ +from flask import Flask, render_template +from flask_apscheduler import APScheduler +import docker +from pprint import pprint +import time + +client = docker.from_env() +app = Flask(__name__) +scheduler = APScheduler() + + +@app.route("/", methods=['GET']) +def index(): + containers = client.containers.list(all=True) + return render_template("index.html", title="test", containers_len=len(containers), containers=containers) + +@app.route("/parts/modal/container/", methods=['GET']) +def parts_container_modal(container_id): + container = client.containers.get(container_id) + + project = '' + if('com.docker.compose.project' in container.attrs['Config']['Labels']): + project = container.attrs['Config']['Labels']['com.docker.compose.project'] + + return render_template("container_modal.html", name=container.name, project=project, ports=container.attrs['NetworkSettings']['Ports'], status=container.status) + +@app.route("/api//", methods=['DELETE', 'POST']) +def api_stop_container(container_id, action): + container = client.containers.get(container_id) + #pprint(vars(container)) + try: + match action: + case 'stop': + container.stop() + case 'start': + container.start() + case _: + return 'False' + + container = client.containers.get(container_id) + return container.status + except: + return 'False' + + + +def scheduleTasks(): + print("This test runs every 3 seconds") + +if __name__ == '__main__': + #scheduler.add_job(id = 'scheduled_tasks', func=scheduleTasks, trigger="interval", seconds=3) + #scheduler.start() + app.run(host="0.0.0.0", port=99, debug=True) diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..e69de29 diff --git a/templates/container_modal.html b/templates/container_modal.html new file mode 100644 index 0000000..e4f154c --- /dev/null +++ b/templates/container_modal.html @@ -0,0 +1,7 @@ +{{name}}
+{{project}}
+{{status}}
+{% for port in ports %} +{{ port.split("/")[0] }} +{%endfor%} + diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..168febc --- /dev/null +++ b/templates/index.html @@ -0,0 +1,103 @@ + + + + + + + {{title}} + + + + + +

{{title}}

+
+
+ {% for container in containers %} +
+
+
+ +
+ + +
+ + +
+
+

{{container.attrs['Config']['Labels']['com.docker.compose.project']}}

+
{{container.name}}
+ {% for port in container.attrs['NetworkSettings']['Ports'] %} + {{ port.split("/")[0] }} + {%endfor%} +
+
+
+ {%endfor%} +
+
+ + + + + + + + + \ No newline at end of file