From ac9bc14f5d813bcb4936bc88e8e561eaa7623d87 Mon Sep 17 00:00:00 2001 From: AdrianoDev Date: Mon, 21 Sep 2026 22:33:32 +0200 Subject: [PATCH] deploy(compose): healthcheck su server e client, depends_on condizionati (#38) server: healthcheck su /api/health. client: healthcheck su /auth/login (pagina di login, raggiungibile senza sessione). depends_on passa a condition: service_healthy dove dipende da server/client (client->server, nginx->server+client in dev). Aggiunge WEB_CONCURRENCY=4 e TRUSTED_PROXY_COUNT=1 nell'environment del server (li legge il backend). Co-Authored-By: Claude Sonnet 5 --- docker-compose.dev.yml | 23 ++++++++++++++++++++--- docker-compose.yml | 17 ++++++++++++++++- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 8eb1b35..f678d56 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -34,11 +34,19 @@ services: DB_HOST: mysql UPLOAD_DIR: uploads VISION_WORKER_URL: http://vision:8100 + WEB_CONCURRENCY: ${WEB_CONCURRENCY:-4} + TRUSTED_PROXY_COUNT: ${TRUSTED_PROXY_COUNT:-1} volumes: - upload_data:/app/uploads depends_on: mysql: condition: service_healthy + healthcheck: + test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/health', timeout=5)"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s networks: - tmflow-net @@ -70,7 +78,14 @@ services: environment: API_SERVER_URL: http://server:8000 depends_on: - - server + server: + condition: service_healthy + healthcheck: + test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:5000/auth/login', timeout=5)"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s networks: - tmflow-net @@ -87,8 +102,10 @@ services: # - ./certbot/conf:/etc/letsencrypt:ro # - ./certbot/www:/var/www/certbot:ro depends_on: - - server - - client + server: + condition: service_healthy + client: + condition: service_healthy networks: - tmflow-net diff --git a/docker-compose.yml b/docker-compose.yml index 2b74fa2..256c405 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,11 +35,19 @@ services: UPLOAD_DIR: uploads VISION_WORKER_URL: http://vision:8100 SERVER_SECRET_KEY: ${SERVER_SECRET_KEY:?manca SERVER_SECRET_KEY} + WEB_CONCURRENCY: ${WEB_CONCURRENCY:-4} + TRUSTED_PROXY_COUNT: ${TRUSTED_PROXY_COUNT:-1} volumes: - upload_data:/app/uploads depends_on: mysql: condition: service_healthy + healthcheck: + test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/health', timeout=5)"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s labels: - "traefik.enable=true" - "traefik.http.routers.tmflow-api.rule=Host(`tieflow.tielogic.xyz`) && (PathPrefix(`/api/`) || PathPrefix(`/uploads/`))" @@ -81,7 +89,14 @@ services: API_SERVER_URL: http://server:8000 CLIENT_SECRET_KEY: ${CLIENT_SECRET_KEY:?manca CLIENT_SECRET_KEY} depends_on: - - server + server: + condition: service_healthy + healthcheck: + test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:5000/auth/login', timeout=5)"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s labels: - "traefik.enable=true" - "traefik.http.routers.tmflow-web.rule=Host(`tieflow.tielogic.xyz`)"