Problem: just test-api uses Testcontainers, which spins up a fresh postgres:18-alpine per test class, and Ryuk does not reap them — orphaned containers accumulate every run (observed: ~28 in a morning, ~57 more by afternoon, GBs of RAM + volumes). This degrades the dev machine, not just CI.
Safe manual prune (used during the loop): docker ps -aq --filter label=org.testcontainers=true → verify the dev DB (publyapp-postgres) and other-project containers are NOT in the set (they carry compose labels, not org.testcontainers) → docker rm -f those ids. Never a blanket label sweep.
Recommendation: Make Ryuk actually reap (check the Ryuk container/privileges in the test harness), or append a labelled prune (label=org.testcontainers=true) to the end of the test-api recipe.
Surfaced during the PR #806 review-fix loop; a standing repo/infra issue, not PR-specific.
Problem:
just test-apiuses Testcontainers, which spins up a freshpostgres:18-alpineper test class, and Ryuk does not reap them — orphaned containers accumulate every run (observed: ~28 in a morning, ~57 more by afternoon, GBs of RAM + volumes). This degrades the dev machine, not just CI.Safe manual prune (used during the loop):
docker ps -aq --filter label=org.testcontainers=true→ verify the dev DB (publyapp-postgres) and other-project containers are NOT in the set (they carry compose labels, notorg.testcontainers) →docker rm -fthose ids. Never a blanket label sweep.Recommendation: Make Ryuk actually reap (check the Ryuk container/privileges in the test harness), or append a labelled prune (
label=org.testcontainers=true) to the end of thetest-apirecipe.Surfaced during the PR #806 review-fix loop; a standing repo/infra issue, not PR-specific.