From b13577ba7498c5c996038aaa80e71cfc5cd11792 Mon Sep 17 00:00:00 2001 From: Satoshi Qazi Muhammed Date: Fri, 16 Oct 2026 14:58:09 +0400 Subject: [PATCH] Recreate only the edge runtime on deploy The deploy gate ran docker compose up --force-recreate functions, which also starts what functions depends on: kong, and through kong studio. studio has been down since the stack restarted on 2026-10-12, so compose stopped with "dependency failed to start: container supabase-studio exited (128)" after removing the old runtime, and left the new one in Created: every edge function answered 503 until it was started by hand. --no-deps recreates the runtime alone; checked with compose --dry-run on the host (with deps: the studio error; with --no-deps: recreated and started). The host's gate is updated to this file, so the deploy's hash check matches. --- ops/supabase-deploy-functions | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ops/supabase-deploy-functions b/ops/supabase-deploy-functions index a5806e8..054871a 100755 --- a/ops/supabase-deploy-functions +++ b/ops/supabase-deploy-functions @@ -89,6 +89,11 @@ def container_running(): def restart_runtime(): """Recreate the edge runtime, tolerating a racing restart. + Only the runtime: --no-deps. Without it compose also starts what functions depends on + (kong, and through kong studio); with studio down that failed with "dependency failed + to start" after the old runtime had already been removed, which left the new one in + Created and every edge function answering 503. + `docker compose up --force-recreate` fails with "No such container" when something else recreated the container between compose reading state and acting on it — a hand-run restart, or another project's deploy. The deploy @@ -98,7 +103,7 @@ def restart_runtime(): """ for attempt in (1, 2, 3): r = subprocess.run( - ["docker", "compose", "up", "-d", "--force-recreate", "functions"], + ["docker", "compose", "up", "-d", "--force-recreate", "--no-deps", "functions"], cwd=COMPOSE_DIR, capture_output=True, text=True, ) if r.returncode == 0: