diff --git a/bioflow_service/app/services/bioflow/extension_image.py b/bioflow_service/app/services/bioflow/extension_image.py index 70c68eb..134db91 100644 --- a/bioflow_service/app/services/bioflow/extension_image.py +++ b/bioflow_service/app/services/bioflow/extension_image.py @@ -139,8 +139,8 @@ def render_dockerfile(base_image: str, requirements: dict[str, Any], pip, apt = _sorted_requirements(requirements) fingerprint = image_fingerprint(base_image, requirements, tag_suffix) lines = ["# auto-generated by extension_image (fingerprint=%s)" % fingerprint, - "LABEL plantai.ext.fingerprint=%s" % fingerprint, - f"FROM {base_image}:{tag_suffix}"] + f"FROM {base_image}:{tag_suffix}", + "LABEL plantai.ext.fingerprint=%s" % fingerprint] if apt: # 单依赖时尾反斜杠由 bash 忽略(命令结束符后接换行安全);多依赖续行 lines.append("RUN apt-get update && apt-get install -y --no-install-recommends " + @@ -245,7 +245,7 @@ class ExtensionImageBuilder: def _inspect_image(self, name: str) -> dict[str, Any]: try: - result = self._run_docker(["docker", "inspect", name], timeout=60.0) + result = self._run_docker(["docker", "inspect", name], timeout_sec=60.0) except FileNotFoundError: return {"hit": False, "error": "docker 命令不可用"} except subprocess.TimeoutExpired: @@ -289,7 +289,7 @@ class ExtensionImageBuilder: if listed.get("exit_code") == 0: for line in str(listed.get("stdout") or "").splitlines(): if line.strip(): - self._run_docker(["docker", "rmi", line.strip()], timeout=120.0) + self._run_docker(["docker", "rmi", line.strip()], timeout_sec=120.0) except (FileNotFoundError, subprocess.TimeoutExpired): pass logger.info("extension image: 构建失败已清理 fingerprint=%s", fingerprint) @@ -360,7 +360,7 @@ class ExtensionImageBuilder: continue removed = False try: - result = self._run_docker(["docker", "rmi", name], timeout=300.0) + result = self._run_docker(["docker", "rmi", name], timeout_sec=300.0) removed = result["exit_code"] == 0 if removed: self.registry().drop(name)