diff --git a/libs/python/computer/computer/providers/docker/provider.py b/libs/python/computer/computer/providers/docker/provider.py index e83c626c..e5f56dc5 100644 --- a/libs/python/computer/computer/providers/docker/provider.py +++ b/libs/python/computer/computer/providers/docker/provider.py @@ -258,14 +258,20 @@ class DockerProvider(BaseVMProvider): logger.info(f"Container {name} is already running") return existing_vm elif existing_vm["status"] in ["stopped", "paused"]: - # Start existing container - logger.info(f"Starting existing container {name}") - start_cmd = ["docker", "start", name] - result = subprocess.run(start_cmd, capture_output=True, text=True, check=True) + if self.ephemeral: + # Delete existing container + logger.info(f"Deleting existing container {name}") + delete_cmd = ["docker", "rm", name] + result = subprocess.run(delete_cmd, capture_output=True, text=True, check=True) + else: + # Start existing container + logger.info(f"Starting existing container {name}") + start_cmd = ["docker", "start", name] + result = subprocess.run(start_cmd, capture_output=True, text=True, check=True) - # Wait for container to be ready - await self._wait_for_container_ready(name) - return await self.get_vm(name, storage) + # Wait for container to be ready + await self._wait_for_container_ready(name) + return await self.get_vm(name, storage) # Use provided image or default docker_image = image if image != "default" else self.image @@ -402,6 +408,11 @@ class DockerProvider(BaseVMProvider): logger.info(f"Container {name} stopped successfully") + # Delete container if ephemeral=True + if self.ephemeral: + cmd = ["docker", "rm", name] + result = subprocess.run(cmd, capture_output=True, text=True, check=True) + return { "name": name, "status": "stopped",