Perf: serve stacks list from one Docker call; registry host → 10.10.6.10 (0.21.6)

Stacks overview and detail were doing an N+1 inspect storm: list_stacks
called containers_for_stack AND compute_status (which re-fetched) per
stack, and containers.list(sparse=False) full-inspects every container
plus c.image triggered an image-inspect each. For N stacks that was
~2N*(1 list + M inspects + M image-inspects) sequential socket round
trips (~1s for just 2 stacks, growing linearly).

- compose_service.stack_status_summaries(): one low-level
  api.containers(all=True) summary call grouped by compose project label
  → whole list served in a single Docker round-trip (~10x faster).
- compute_status() takes optional pre-fetched containers; get_stack and
  _stack_summary no longer double-fetch.
- containers_for_stack() reads the image name from the inspect it already
  has instead of c.image (drops the per-container image-inspect).
- Same batching applied to the agent's stack list/detail.

Also: Forgejo (registry + git) moved to 10.10.6.10:3020 — updated image
refs in docker-compose.yml, agent/Dockerfile, agent/docker-compose.yml.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
menzelj
2026-06-08 18:53:12 +00:00
co-authored by Claude Opus 4.8
parent cf046648bd
commit 5b59f5e8f9
8 changed files with 120 additions and 52 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
services:
backend:
image: 10.10.5.10:3020/menzelj/stackpilot-backend:latest
image: 10.10.6.10:3020/menzelj/stackpilot-backend:latest
build: ./backend
restart: unless-stopped
environment:
@@ -38,7 +38,7 @@ services:
# - "5008:5008"
frontend:
image: 10.10.5.10:3020/menzelj/stackpilot-frontend:latest
image: 10.10.6.10:3020/menzelj/stackpilot-frontend:latest
build: ./frontend
restart: unless-stopped
depends_on: