(timeout_seconds: int)
| 110 | |
| 111 | |
| 112 | def ensure_docker_daemon(timeout_seconds: int) -> None: |
| 113 | ensure_docker_cli() |
| 114 | if docker_ready(): |
| 115 | log("Docker daemon 已就绪") |
| 116 | return |
| 117 | |
| 118 | if DOCKER_DESKTOP_EXE.exists(): |
| 119 | log("Docker daemon 尚未就绪,尝试启动 Docker Desktop", "WARN") |
| 120 | subprocess.Popen([str(DOCKER_DESKTOP_EXE)], cwd=PROJECT_ROOT) |
| 121 | else: |
| 122 | raise LaunchError("Docker daemon 未就绪,且未找到 Docker Desktop.exe。") |
| 123 | |
| 124 | deadline = time.time() + timeout_seconds |
| 125 | while time.time() < deadline: |
| 126 | if docker_ready(): |
| 127 | log("Docker daemon 已恢复可用") |
| 128 | return |
| 129 | time.sleep(3) |
| 130 | |
| 131 | raise LaunchError("等待 Docker daemon 超时,请确认 Docker Desktop 已完全启动。") |
| 132 | |
| 133 | |
| 134 | def ensure_postgres_service( |
no test coverage detected