From 672f267e41e662968ae9a5ee7f3d11242c04575a Mon Sep 17 00:00:00 2001 From: Marco Andronaco Date: Wed, 9 Aug 2023 02:30:01 +0200 Subject: [PATCH] add healthcheck --- .dockerignore | 3 ++- docker-compose.yaml | 5 +++++ docker_status/views.py | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 6e75e13..f908c05 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,7 +2,8 @@ tests .dockerignore .git* -config.json +config.* +docker-compose.yaml Dockerfile poetry.lock pyproject.toml diff --git a/docker-compose.yaml b/docker-compose.yaml index 7c1b934..683bfae 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -8,3 +8,8 @@ services: volumes: - /var/run/docker.sock:/var/run/docker.sock - ${PWD}/config.json:/app/config.json:ro + healthcheck: + test: wget -nv --tries=1 --spider http://localhost:1111/stats || exit 1 + interval: 30s + timeout: 5s + retries: 2 \ No newline at end of file diff --git a/docker_status/views.py b/docker_status/views.py index 4c1aaea..4fb1e58 100644 --- a/docker_status/views.py +++ b/docker_status/views.py @@ -4,8 +4,11 @@ from flask import request, redirect, render_template from docker_status import app from docker_status.my_docker import update_status +last_updated = datetime.now() + @app.route('/', methods=['GET', 'POST']) def route_index(): + last_updated = datetime.now() services = update_status() for name, service in services.items(): containers = service["containers"] @@ -14,3 +17,8 @@ def route_index(): if request.method == 'GET': return render_template("index.html", services=services) return json.dumps(services) + +@app.route('/stats') +def route_stats(): + return json.dumps({ "last_updated": last_updated.strftime("%Y-%m-%dT%H:%M:%SZ") }) + \ No newline at end of file