From 58e0929a4cc0314d1cf94bb3ecefcaa8366b0c70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Gruszczy=C5=84ski?= Date: Sat, 12 Jul 2025 23:13:13 +0200 Subject: [PATCH] healthcheck w docker-compose --- .env.example | 5 ++++- app.py | 10 ++++++++++ config.py | 3 ++- docker-compose.yml | 7 +++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index ca8c477..f8da826 100644 --- a/.env.example +++ b/.env.example @@ -17,4 +17,7 @@ UPLOAD_FOLDER=uploads AUTHORIZED_COOKIE_VALUE=twoj_wlasny_hash # czas zycia cookie -AUTH_COOKIE_MAX_AGE=86400 \ No newline at end of file +AUTH_COOKIE_MAX_AGE=86400 + +# dla compose +HEALTHCHECK_TOKEN=alamapsaikota123 \ No newline at end of file diff --git a/app.py b/app.py index 9c8c926..c0b9a92 100644 --- a/app.py +++ b/app.py @@ -35,6 +35,7 @@ UPLOAD_FOLDER = app.config.get('UPLOAD_FOLDER', 'uploads') ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'webp'} AUTHORIZED_COOKIE_VALUE = app.config.get('AUTHORIZED_COOKIE_VALUE', '80d31cdfe63539c9') AUTH_COOKIE_MAX_AGE = app.config.get('AUTH_COOKIE_MAX_AGE', 86400) +HEALTHCHECK_TOKEN = app.config.get('HEALTHCHECK_TOKEN', 'alamapsaikota1234') os.makedirs(UPLOAD_FOLDER, exist_ok=True) @@ -1201,6 +1202,15 @@ def demote_user(user_id): flash(f'Użytkownik {user.username} został zdegradowany.', 'success') return redirect(url_for('list_users')) +@app.route('/healthcheck') +def healthcheck(): + header_token = request.headers.get("X-Internal-Check") + correct_token = current_app.config.get("HEALTHCHECK_TOKEN") + + if header_token != correct_token: + abort(403) + return 'OK', 200 + # ========================================================================================= # SOCKET.IO # ========================================================================================= diff --git a/config.py b/config.py index e846822..68666d5 100644 --- a/config.py +++ b/config.py @@ -9,4 +9,5 @@ class Config: DEFAULT_ADMIN_PASSWORD = os.environ.get('DEFAULT_ADMIN_PASSWORD', 'admin123') UPLOAD_FOLDER = os.environ.get('UPLOAD_FOLDER', 'uploads') AUTHORIZED_COOKIE_VALUE = os.environ.get('AUTHORIZED_COOKIE_VALUE', 'cookievalue') - AUTH_COOKIE_MAX_AGE = int(os.environ.get('AUTH_COOKIE_MAX_AGE', 86400)) \ No newline at end of file + AUTH_COOKIE_MAX_AGE = int(os.environ.get('AUTH_COOKIE_MAX_AGE', 86400)) + HEALTHCHECK_TOKEN = os.environ.get('HEALTHCHECK_TOKEN', 'alamapsaikota1234') \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 3941886..65e4333 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,12 @@ services: container_name: live-lista-zakupow ports: - "${APP_PORT:-8000}:8000" + healthcheck: + test: ["CMD", "curl", "-f", "-H", "X-Internal-Check: ${HEALTHCHECK_TOKEN}", "http://localhost:8000/healthcheck"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s environment: - FLASK_APP=app.py - FLASK_ENV=production @@ -14,5 +20,6 @@ services: - UPLOAD_FOLDER=${UPLOAD_FOLDER} - AUTHORIZED_COOKIE_VALUE=${AUTHORIZED_COOKIE_VALUE} - AUTH_COOKIE_MAX_AGE=${AUTH_COOKIE_MAX_AGE} + - HEALTHCHECK_TOKEN=${HEALTHCHECK_TOKEN} volumes: - .:/app