You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Разобраться почему после перезагрузки часто контейнер за собой не запускает контейнер от MCP playright с браузером #137
Healthcheck на browser-сервисе: добавлен healthcheck (curl /json/version на порту 9223) — Docker теперь знает когда CDP реально готов, а не просто когда контейнер запустился
depends_on: condition: service_healthy: основной контейнер ждёт здорового browser перед стартом — устраняет race condition при перезагрузке
DinD изоляция в docker-compose.api.yml: хостовый docker.sock заменён на выделенный docker:27-dind сервис с DOCKER_HOST=tcp://dind:2375
Математические гарантии
Инварианты:
∀ restart: main_container_start → browser_cdp_ready (гарантировано через condition: service_healthy)
∀ p: docker_ops(p) → isolated_daemon (docker.sock хоста не задействован)
Предусловия:
browser-контейнер отвечает на GET /json/version по порту 9223
Постусловия:
main-контейнер стартует только после 10 успешных healthcheck-проверок
при перезагрузке browser-контейнера — main автоматически ждёт его готовности
Test plan
pnpm --filter ./packages/lib test — 69/69 passed
pnpm --filter ./packages/lib lint — 0 errors
pnpm typecheck — no errors
Поднять стек с --mcp-playwright, перезапустить browser-контейнер, убедиться что main дожидается готовности
Activity
fix(shell): restart browser sidecar reliably via healthcheck + DinD i…
skulidropek commentedon Mar 16, 2026
Closes #137
Summary
healthcheck(curl /json/versionна порту 9223) — Docker теперь знает когда CDP реально готов, а не просто когда контейнер запустилсяdepends_on: condition: service_healthy: основной контейнер ждёт здорового browser перед стартом — устраняет race condition при перезагрузкеdocker-compose.api.yml: хостовыйdocker.sockзаменён на выделенныйdocker:27-dindсервис сDOCKER_HOST=tcp://dind:2375Математические гарантии
Инварианты:
∀ restart: main_container_start → browser_cdp_ready(гарантировано черезcondition: service_healthy)∀ p: docker_ops(p) → isolated_daemon(docker.sock хоста не задействован)Предусловия:
GET /json/versionпо порту 9223Постусловия:
Test plan
pnpm --filter ./packages/lib test— 69/69 passedpnpm --filter ./packages/lib lint— 0 errorspnpm typecheck— no errors--mcp-playwright, перезапустить browser-контейнер, убедиться что main дожидается готовности🤖 Generated with Claude Code