From bade2f77724de1f6e5aa6f632023ddcdf077bac9 Mon Sep 17 00:00:00 2001 From: lekss361 <47113017+lekss361@users.noreply.github.com> Date: Thu, 14 May 2026 22:42:09 +0300 Subject: [PATCH] chore(infra): healthcheck frontend + tighten depends_on; pin rosreestr2coord>=5 (#117) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add wget healthcheck to frontend service (alpine-compatible) — Caddy больше не роутит трафик до того как Next.js готов. - Caddy depends_on backend/frontend: service_started → service_healthy. - backend/worker/beat redis dependency: service_started → service_healthy (Redis уже имеет redis-cli ping healthcheck). - Pin rosreestr2coord>=5.0.0 (v5 убрала delay параметр; код уже адаптирован per CLAUDE.md); uv resolved 5.3.3. Closes Day-1 quick wins #3+4 from code review audit (May 14). Co-authored-by: lekss361 --- backend/pyproject.toml | 2 +- backend/uv.lock | 2 +- docker-compose.prod.yml | 18 +++++++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/backend/pyproject.toml b/backend/pyproject.toml index afabe12a..8df3fa61 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -28,7 +28,7 @@ dependencies = [ "numpy>=2.0.0", "scikit-learn>=1.5.0", "sentry-sdk[fastapi]>=2.10.0", - "rosreestr2coord>=4.0.0", + "rosreestr2coord>=5.0.0", ] [dependency-groups] diff --git a/backend/uv.lock b/backend/uv.lock index 8bd2a644..1422c133 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -616,7 +616,7 @@ requires-dist = [ { name = "pydantic-settings", specifier = ">=2.3.0" }, { name = "pyproj", specifier = ">=3.6.0" }, { name = "redis", specifier = ">=5.0.0" }, - { name = "rosreestr2coord", specifier = ">=4.0.0" }, + { name = "rosreestr2coord", specifier = ">=5.0.0" }, { name = "scikit-learn", specifier = ">=1.5.0" }, { name = "sentry-sdk", extras = ["fastapi"], specifier = ">=2.10.0" }, { name = "shapely", specifier = ">=2.0.0" }, diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 54fc3668..d017afc7 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -58,7 +58,7 @@ services: postgres: condition: service_healthy redis: - condition: service_started + condition: service_healthy ports: - "127.0.0.1:8000:8000" healthcheck: @@ -75,6 +75,12 @@ services: - "127.0.0.1:3000:3000" depends_on: - backend + healthcheck: + test: ["CMD-SHELL", "wget --quiet --tries=1 --spider http://localhost:3000/ || exit 1"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s worker: # Отдельный chromium-образ (+200 МБ Playwright). См. backend/Dockerfile target=runner-with-chromium. @@ -88,7 +94,7 @@ services: postgres: condition: service_healthy redis: - condition: service_started + condition: service_healthy volumes: - ./data:/app/data # playwright_state.json + photo binaries # Read-only bind-mount Антоновского /sf/ SQLite — для objective_etl task. @@ -108,7 +114,7 @@ services: required: false depends_on: redis: - condition: service_started + condition: service_healthy command: ["celery", "-A", "app.workers.celery_app", "beat", "--loglevel=info"] caddy: @@ -122,8 +128,10 @@ services: - caddy_data:/data - caddy_config:/config depends_on: - - backend - - frontend + backend: + condition: service_healthy + frontend: + condition: service_healthy networks: - default # shared — для маршрута obsidian.gendsgn.ru → couchdb (отдельный stack).