From 5dc6c947d1c5a8ba128811fec0bc389510b2208c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Gruszczy=C5=84ski?= Date: Wed, 30 Jul 2025 09:58:54 +0200 Subject: [PATCH] brakujacy nc zastapiony pythonem --- .env.example | 12 ++++++------ _tools/wait_for_db.py | 17 +++++++++++++++++ entrypoint.sh | 12 +++++------- 3 files changed, 28 insertions(+), 13 deletions(-) create mode 100644 _tools/wait_for_db.py diff --git a/.env.example b/.env.example index fbdc3c8..6f2192c 100644 --- a/.env.example +++ b/.env.example @@ -41,6 +41,7 @@ AUTH_COOKIE_MAX_AGE=86400 # AUTHORIZED_COOKIE_VALUE: # Wartość ciasteczka uprawniającego do dostępu (np. do zasobów zabezpieczonych) # Powinna być trudna do przewidzenia +# Chodzi to o zabezpieczenie strony "hasłęm głównym czyli endpointem /system-auth" AUTHORIZED_COOKIE_VALUE=twoj_wlasny_hash # SESSION_COOKIE_SECURE: @@ -50,6 +51,10 @@ AUTHORIZED_COOKIE_VALUE=twoj_wlasny_hash # Zalecane: 1 w produkcji (HTTPS), 0 w dev. SESSION_COOKIE_SECURE=0 +# BCRYPT_PEPPER: +# Dodatkowy „sekretny klucz” (pepper) dodawany do hasła przed zahashowaniem +# Zwiększa bezpieczeństwo przechowywanych haseł +BCRYPT_PEPPER=sekretnyKluczbcrypt # HEALTHCHECK_TOKEN: # Token wykorzystywany do sprawdzania stanu aplikacji (np. w Docker Compose) @@ -114,10 +119,8 @@ ENABLE_CSP=1 # a przy przejściach między domenami tylko origin (np. https://example.com). # Zalecane ustawienie dla dobrej równowagi między prywatnością a funkcjonalnością. # Inne możliwe wartości: no-referrer, same-origin, origin, strict-origin, unsafe-url itd. - REFERRER_POLICY="strict-origin-when-cross-origin" - # DEBUG_MODE: # Czy uruchomić aplikację w trybie debugowania (z konsolą błędów i autoreloaderem) # Domyślnie: 1 @@ -128,7 +131,6 @@ DEBUG_MODE=1 # Domyślnie: 0 DISABLE_ROBOTS=0 - # ======================== # Nagłówki cache # ======================== @@ -156,6 +158,4 @@ LIB_CSS_CACHE_CONTROL="public, max-age=604800" # UPLOADS_CACHE_CONTROL: # Nagłówki Cache-Control dla wgrywanych plików (/uploads/) # Domyślnie: "public, max-age=2592000, immutable" -UPLOADS_CACHE_CONTROL="public, max-age=2592000, immutable" - -BCRYPT_PEPPER=sekretnyKluczbcrypt \ No newline at end of file +UPLOADS_CACHE_CONTROL="public, max-age=2592000, immutable" \ No newline at end of file diff --git a/_tools/wait_for_db.py b/_tools/wait_for_db.py new file mode 100644 index 0000000..5c42386 --- /dev/null +++ b/_tools/wait_for_db.py @@ -0,0 +1,17 @@ +import os +import socket +import time + +host = os.environ.get("DB_HOST", "mysql") +port = int(os.environ.get("DB_PORT", 3306)) + +print(f"Czekam na bazę danych {host}:{port}...") + +while True: + try: + with socket.create_connection((host, port), timeout=5): + print("Baza danych jest dostępna.") + break + except OSError: + print("Baza jeszcze nie odpowiada, czekam...") + time.sleep(2) diff --git a/entrypoint.sh b/entrypoint.sh index 17a7fdb..4de71eb 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,12 +1,10 @@ #!/bin/sh -# Czekaj aż baza będzie gotowa -echo "Czekam na MySQL..." -until nc -z -v -w30 "$DB_HOST" "$DB_PORT" -do - echo "Baza jeszcze nie odpowiada, czekam..." - sleep 2 -done +# Czekaj na bazę w Pythonie +python _tools/wait_for_db.py +# Jak baza gotowa, to migruj li daj informacje flask db upgrade 2>/dev/null || flask db_info + +# Start aplikacji exec python app.py